当提交表单时,如何防止在Rails中被更新的单一属性? 所有其他的属性应该被更新。
难道before_save
, attr_reader
或一些其他的方式?
如果使用before_save
,如何访问到的属性哈希?
Rails的3.0.7
当提交表单时,如何防止在Rails中被更新的单一属性? 所有其他的属性应该被更新。
难道before_save
, attr_reader
或一些其他的方式?
如果使用before_save
,如何访问到的属性哈希?
Rails的3.0.7
退房attr_protected
。
Class YourModel << ActiveRecord::Base
attr_protected :the_one_column, as: :update
# ...
end
现在,作为一个调用的一部分update_attributes
,你会指定:update
的作用,例如
klass = YourModel.find(some_id)
klass.update_attributes(params[:your_model], as: :update)
如果:the_one_column
在设置params
传递给update_attributes
,它会抛出一个错误。
作为@Beerlington在他对你的问题发表评论时提及,你也应该看看attr_accessible 。 它通常是更好地度过30分钟通过应用程序白名单的所有车型会使用属性attr_accessible
比它列入黑名单具有特定属性的attr_protected
。
另一种选择是简单地做这在你的控制器:
klass.update_attributes( params[:your_model].except(:attributes_to_avoid) )