脏并检查电子邮件属性是否已更改?

时间:2010-07-31 17:44:24

标签: ruby-on-rails ruby

我的项目的最后一部分,希望。

需要检查user.email属性是否更改。如果是,那么需要告诉mailchimp更改或添加电子邮件。

看起来Dirty会这样做,但以前从未使用过它。如何捕获块中的更改,或将其传递给块,然后更新属性?

2 个答案:

答案 0 :(得分:9)

使用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'] }

答案 1 :(得分:0)

我建议使用Rails Dirty方法:

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

但你也可以这样做:

if @user.email != params[:user][:email]
  # ...
end