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

pca*_*asa 4 ruby ruby-on-rails

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

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

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

Joh*_*ley 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'] }
Run Code Online (Sandbox Code Playgroud)


Dor*_*ian 0

我建议使用 Rails Dirty 方法:

if @user.email.changed?
  # ...
end
Run Code Online (Sandbox Code Playgroud)

但你也可以这样做:

if @user.email != params[:user][:email]
  # ...
end
Run Code Online (Sandbox Code Playgroud)