提交表单时,如何防止Rails中单个属性被更新?所有其他属性都应该更新。
是before_save
,attr_reader
还是其他方式?
如果使用before_save
,如何访问属性哈希?
导轨 3.0.7
提交表单时,如何防止Rails中单个属性被更新?所有其他属性都应该更新。
是before_save
,attr_reader
还是其他方式?
如果使用before_save
,如何访问属性哈希?
导轨 3.0.7
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) )