Грязный и проверить, изменился ли атрибут электронной почты? - PullRequest
4 голосов
/ 31 июля 2010

Последняя часть моего проекта, надеюсь.

Необходимо проверить, изменяется ли атрибут user.email.Если это так, то нужно указать mailchimp изменить или добавить адрес электронной почты.

Похоже, что Dirty сделает это, но никогда не использовал его раньше.Как я могу поймать изменение в блоке или передать его в блок, а затем обновить атрибут?

Ответы [ 2 ]

9 голосов
/ 31 июля 2010

Использование модуля ActiveRecord :: Dirty довольно просто:

bob = User.find_by_email('bob@example.org')
bob.changed?       # => false

bob.email = 'robert@example.org')
bob.changed?       # => true
bob.email_changed? # => true
bob.email_was      # => 'bob@example.org'
bob.email_change   # => ['bob@example.org', 'robert@example.org']
bob.changed        # => ['email']
bob.changes        # => { 'email' => ['bob@example.org', 'robert@example.org'] }
0 голосов
/ 31 июля 2010

Я рекомендую использовать Rails Dirty методы:

if @user.email.changed?
  # ...
end

Но вы также можете сделать:

if @user.email != params[:user][:email]
  # ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...