我有一个User.rb模型和一个UserSetting.rb模型,我想委托给(getter和setter方法)。Rails委托设置值
在user.rbdelegate :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
(所以这个值没有被保存到数据库中)。
这是我的问题:如何让UserSetting自动保存,当其中一个属性被更改,然后由其用户保存?
这应该只发生在UserSetting属性发生变化时,否则每次将用户保存到数据库时,都会触发额外的不需要的数据写入操作&。
是否变化总是通过形式?这样可以在fields_for中使用accept_nested_attributes。 – lulalala