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