2012-07-02 35 views

回答

1

如果你都做了示範它將幫助碼。

在你的模型文件添加用戶attr_accessible

attr_accessible :name 
+0

我有添加你建議我的線路,然後也沒有解決問題,這裏是代碼/ 要求'摘要' class User true, :length => {:maximum => 50} 驗證:email::presence => true, :format => {:with => email_regex }, :唯一性=> {:case_sensitive => false} – Dennis

+0

糟糕!一個更正。它應該是 attr_accessible:名稱 –

+0

感謝薩加爾問題解決了, – Dennis

1

在你config/application.rb,你有下面這行:

config.active_record.whitelist_attributes = true 

,而在你的模型,你錯過了這條線:

attr_accessible :name 

不要更改配置文件,但添加attr_accessible。您應該閱讀http://guides.rubyonrails.org/security.html#mass-assignment以更好地瞭解質量分配安全問題。

+0

我已經添加了行,你已經建議我,然後也沒有解決問題 – Dennis

+0

錯誤信息仍然是完全一樣的? –

+0

是的,同樣的信息再次出現。 – Dennis

3

幾件事情:

質量分配通常意味着傳遞屬性成創建一個對象作爲屬性信息的一部分散列呼叫。也就是說,你將一堆散列中的屬性傳遞給創建新對象的調用。例如:

@user = User.create({:name => "My name", :user_type => "nice_user"}) 

然而,Rails包含意味着不是所有的屬性都可以通過默認分配這樣一些基本的安全規則。你必須事先指定哪些可以。你這樣做是這樣的:

class user < ActiveRecord::Base 
    attr_accessible :name, :user_type 
end 

如果不指定屬性爲attr_accessible,而且你通過它來創建對象,你得到你所張貼的錯誤。

以下是詳細信息:

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

另一種方法是設置某些屬性,當你第一次創建記錄,並經過設置其他 - 就像這樣:

# In this example `user_type` is not attr_accessible so it needs to be set specifically 
@user = User.create({:name => "My name"}) 
@user.user_type = "nice_user" 
@user.save 
+0

感謝凱文,我在user.rb(attr_accessible:名字)目前它正在工作,實際上這是我的第一個階段,所以將來我會用上面提到的代碼進行練習,非常感謝。 – Dennis

相關問題