我只想弄清楚什么是批量分配,以及如何围绕它进行编码。Is mass assignment使用散列对多个字段进行赋值,例如..
@user = User.new(params[:user])
为了防止这种情况,您可以使用attr_accessible,如下所示:
attr_accessible :name, :email
所以像:admin这样的字段不能通过批量分配添加?
但我们可以在代码中修改它,如下所示:
@user.admin = true
那么,如果我们没有attr_accessible,那么所有东西都可以进行批量分配,这是真的吗?
最后是棘手的一点。即使只有一个名称,比如"attr_accessible:attr_accessible“,是否意味着所有其他字段现在都不能通过访问,可以进行批量赋值?
发布于 2011-03-12 03:06:59
你所有的假设都是正确的。如果没有attr_accessible,则所有字段都可以进行批量分配。如果您开始使用attr_accessible,则只有您指定的字段可以进行成批分配。
发布于 2011-03-12 06:43:32
正如Srdjan所指出的,您的所有假设都是正确的。如您所知,还有一种与attr_accessible相反的attr_protected方法。
换句话说
attr_protected :admin
将阻止:admin被批量分配,但将允许所有其他字段。
发布于 2013-03-03 03:48:28
Srdjan的答案是正确的,假设您的config/application.rb
中的config.active_record.whitelist_attributes
设置为false
。
如果将其设置为true
,则默认情况下,除非使用attr_accessible
或attr_protected
,否则所有属性都将受到保护,不会被大量赋值。
https://stackoverflow.com/questions/5277191
复制相似问题