我的项目的最后一部分,希望。
需要检查user.email属性是否更改。如果是,那么需要告诉mailchimp更改或添加电子邮件。
看起来Dirty会这样做,但以前从未使用过它。如何捕获块中的更改,或将其传递给块,然后更新属性?
答案 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