Ho un modello User.rb e un modello UserSetting.rb che vorrei delegare a (entrambi i metodi getter e setter).Rails Delegate Set Value
in user.rb
delegate :email_opt_in, :email_opt_in=, :to => :user_setting
A prima vista questa grande opera.
user = User.find(1)
user.email_opt_in #=> false
user.email_opt_in = true
user.save
user.email_opt_in #=> true
Ma guardando più da vicino il, user.save
non propaga al modello UserSetting.
User.find(1).email_opt_in #=> false
(Quindi il valore non è stato salvato nel database).
Questa è la mia domanda: come posso ottenere che UserSetting salvi automaticamente quando uno dei suoi attributi viene modificato e quindi salvato dall'utente?
Questo dovrebbe accadere solo quando un attributo UserSetting viene modificato, altrimenti ogni volta che un utente viene salvato nel database, si attiverà un'ulteriore scrittura non necessaria & indesiderata nel database.
Vuol modifiche passare sempre attraverso le forme? In questo modo si possono usare accept_nested_attributes con fields_for. – lulalala