2011-03-11 49 views
16

只是想明確什麼是質量分配以及如何對其進行編碼。是質量分配許多領域的使用哈希的分配,即如..Rails質量分配定義和attr_accessible使用

@user = User.new(params[:user]) 

此外,要防止這一點,你使用attr_accessible,如:

attr_accessible :name, :email 

因此像場:管理員無法通過批量分配添加?

但是,我們可以通過類似修改代碼:所以這是真的,如果我們沒有attr_accessible然後一切爲了質量分配訪問

@user.admin = true 

最後棘手的問題......這是真的,即使有一個attr_accessible像「attr_accessible:名稱」是指所有等領域現在的質量分配訪問?

回答

11

你所有的假設都是正確的。如果沒有attr_accessible,所有字段都可以進行批量分配。如果您開始使用attr_accessible,則只有您指定的字段纔可以進行批量分配。

5

正如Srdjan所指出的,你所有的假設都是正確的。如你所知,還有一個與attr_accessible相反的attr_protected方法。

換句話說

attr_protected :admin 

會阻止:管理員被大量分配,但將允許所有其他領域。

2

Srdjan的回答是正確的,假設config.active_record.whitelist_attributes在您的config/application.rb中設置爲false

如果它被設置爲true,默認情況下所有屬性將被保護,質量分配,除非attr_accessibleattr_protected使用。