フォームが送信されたときに、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た が設定されている場合、エラーがスローされます。paramsupdate_attributes
@Beerlington が質問へのコメントで述べたように、attr_accessibleも確認する必要があります。attr_accessible一般に、特定の属性を でブラックリストに登録するよりも、を使用して属性をホワイトリストに登録するアプリケーションのすべてのモデルに 30 分を費やす方が適切ですattr_protected。
他のオプションは、コントローラーでこれを行うだけです:
klass.update_attributes( params[:your_model].except(:attributes_to_avoid) )