Rails Develation Set

У меня есть модель 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

(поэтому значение не сохранилось в базе данных).

Это мой вопрос: как я могу получить пользователь, чтобы сохранить автоматически, когда один из его атрибутов изменен, а затем сохранен его пользователем?

Это должно произойти только при изменении атрибута пользователей, в противном случае каждый раз, когда пользователь сохраняется в базе данных, он будет вызвать дополнительную необходимую и нежелательную запись в базу данных.

11
задан Schneems 16 September 2011 в 20:31
поделиться