如何使用ActiveModel Dirty来保持Mailchimp与我的用户模型同步?

时间:2014-03-04 03:36:06

标签: ruby-on-rails devise mailchimp

我想让Mailchimp与我的用户表保持同步。

我想捕获Mailchimp表格中的所有设计字段(例如current_sign_in_atsign_in_count等)并保持最新状态。

Mailchimp API集成非常简单。我想知道的是如何最好地挂钩到User模型,以便我可以使用新记录触发我的Mailchimp更新方法。

如果有人能解释为什么'Dirty'被称为我会很感激!

1 个答案:

答案 0 :(得分:0)

至于你的第一个问题,有许多回调可以挂钩,以便在必要时更新Mailchimp。如果要仅使用新用户更新Mailchimp,则可以使用after_create;如果要更新现有用户数据的Mailchimp,则可以使用after_update。 您可以阅读回调here的完整文档。

Dirty是表示某些数据已更改但尚未保留的常用方法。在ActiveRecord中,这意味着模型的属性已更改但尚未保存到数据库。 因此,当我写@some_user.username = 'some_user_name'时,我将username @some_user属性设为脏。一旦我发出@some_user.save!,该属性就会被持久化,不再被称为脏属性。

这两个概念的组合正是您所寻求的。 例如:

class User < ActiveRecord::Base
  before_update :update_mailchimp

  def update_mailchimp
    self.changed # => array of changed attributes
    self.changes # => hash of { attribute => [old_value, new_value] }
  end
end

我建议您阅读AR Dirty module的完整文档。