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