Tengo un modelo User.rb y un modelo UserSetting.rb al que me gustaría delegar (tanto los métodos getter como setter).Valor de conjunto del delegado de rieles
en user.rb
delegate :email_opt_in, :email_opt_in=, :to => :user_setting
A primera vista, esto funciona muy bien.
user = User.find(1)
user.email_opt_in #=> false
user.email_opt_in = true
user.save
user.email_opt_in #=> true
Pero mirando más de cerca el, user.save
no se propaga al modelo UserSetting.
User.find(1).email_opt_in #=> false
(De modo que el valor no se guardó en la base de datos).
Esta es mi pregunta: ¿Cómo puedo hacer que UserSetting se guarde automáticamente cuando uno de sus atributos se cambia y luego es guardado por su usuario?
Esto solo debería ocurrir cuando se modifica un atributo de configuración de usuario; de lo contrario, cada vez que se guarda un usuario en la base de datos se generará una escritura no deseada & adicional no necesaria en la base de datos.
¿Tiene cambios siempre van a través de formas? De esa forma uno puede usar accepts_nested_attributes con fields_for. – lulalala