Rails质量分配定义和attr_accessible使用
只是想明确什么是质量分配以及如何围绕它进行编码。 质量赋值是使用散列分配许多字段,即类似..
@user = User.new(params[:user])
为了防止这种情况,你可以使用attr_accessible :
attr_accessible :name, :email
因此,像管理员这样的字段无法通过批量分配添加?
但我们可以通过以下方式在代码中修改它:
@user.admin = true
那么,如果我们没有attr_accessible那么一切都可以进行大规模分配吗?
最后一个棘手的问题……是否真的即使有一个attr_accessible如“attr_accessible:name”也意味着所有其他字段现在都无法进行质量分配?
你所有的假设都是正确的。 没有attr_accessible,所有字段都可以进行批量分配。 如果您开始使用attr_accessible,则只有您指定的字段才能进行质量分配。
正如Srdjan所指出的,你所有的假设都是正确的。 你知道,还有一个attr_protected方法,与attr_accessible相反。
换一种说法
attr_protected :admin
将阻止:管理员被批量分配,但将允许所有其他字段。
假设config/application.rb
config.active_record.whitelist_attributes
在config/application.rb
设置为false
,则Srdjan的答案是正确的。
如果设置为true
,则默认情况下将保护所有属性免受质量分配,除非使用attr_accessible
或attr_protected
。