私は、User.rbモデルと、委任したいUserSetting.rbモデル(getterメソッドとsetterメソッドの両方)を持っています。一見Rails代理人設定値
user.rbでdelegate :email_opt_in, :email_opt_in=, :to => :user_setting
これは素晴らしい作品。
user = User.find(1)
user.email_opt_in #=> false
user.email_opt_in = true
user.save
user.email_opt_in #=> true
しかし、user.save
はUserSettingモデルに反映されません近くに探して。
User.find(1).email_opt_in #=> false
(値はデータベースに保存されませんでした)。
これは私の質問です。その属性の1つが変更され、そのユーザーによって保存されると自動的に保存するにはどうすればよいですか?
これは、UserSetting属性が変更された場合にのみ発生します。そうしないと、ユーザーがデータベースに保存されるたびに、不必要な追加書き込みがデータベースに追加されます(&)。
は変化は常にフォームを通過していますか?そうすれば、fields_forでaccepts_nested_attributesを使うことができます。 – lulalala