提交表单时,如何防止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) )