我想让Mailchimp与我的用户表保持同步。
我想捕获Mailchimp表格中的所有设计字段(例如current_sign_in_at
,sign_in_count
等)并保持最新状态。
Mailchimp API集成非常简单。我想知道的是如何最好地挂钩到User
模型,以便我可以使用新记录触发我的Mailchimp更新方法。
如果有人能解释为什么'Dirty'被称为我会很感激!
答案 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的完整文档。