У меня есть модель user.rb и модель useretting.rb, которую я хотел бы делегировать (как gotter, и setter Методы).
В 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
не распространяется на модель пользователей.
User.find(1).email_opt_in #=> false
(поэтому значение не сохранилось в базе данных).
Это мой вопрос: как я могу получить пользователь, чтобы сохранить автоматически, когда один из его атрибутов изменен, а затем сохранен его пользователем?
Это должно произойти только при изменении атрибута пользователей, в противном случае каждый раз, когда пользователь сохраняется в базе данных, он будет вызвать дополнительную необходимую и нежелательную запись в базу данных.