2

提交表单时,如何防止Rails中单个属性被更新?所有其他属性都应该更新。

before_saveattr_reader还是其他方式?

如果使用before_save,如何访问属性哈希?

导轨 3.0.7

4

2 回答 2

2

退房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.

于 2012-08-18T17:04:06.957 回答
2

其他选项只是在您的控制器中执行此操作:

klass.update_attributes( params[:your_model].except(:attributes_to_avoid) )
于 2012-08-19T06:08:44.793 回答