如何让Ruby(Rails)忽略在批量分配时存在的受保护变量?Ruby - 忽略受保护的属性
class MyClass < ActiveRecord::Base
attr_accessible :name, :age
end
现在我将批量分配一个散列来创建一个新的MyClass
。
MyClass.create!({:name => "John", :age => 25, :id => 2})
这会给我一个例外:
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: id
我想它来创建一个新的MyClass
与指定的(无保护)的属性,而忽略了id
属性。
附注:我怎样才能忽略未知属性。例如,MyClass
没有location
属性。如果我尝试大量分配它,就忽略它。
那么,这就是整个问题。你只接受你*知道的变量。你*不知道的变量是曾经被削弱过的变量,你正在切出并使用你知道的变量。 – meagar 2013-02-21 17:48:44
是的,你必须考虑你正在更新/创建时,你分配的东西。这就是为什么Rails在默认情况下将质量分配保护打开的原因。此解决方案仅分配您定义的变量,这应该是您想要的。 – 2013-02-21 17:50:34
@MichaelPapile对。我如何获得某个类的无保护属性? – 2013-02-21 17:52:56