【发布时间】:2014-09-21 03:46:52
【问题描述】:
对于上下文,我正在使用 Ruby on Rails 开发一个 Web 应用程序,并且我正在使用 MailChimp 来处理电子邮件活动。
给定一个名为 User 的 ActiveRecord 模型和一个名为 email 的属性,我如何在成功创建新用户后将用户的电子邮件发送到 MailChimp 列表?
【问题讨论】:
-
作为一名优秀的学习者和贡献者,如果您发现任何有用的答案,您应该点赞
对于上下文,我正在使用 Ruby on Rails 开发一个 Web 应用程序,并且我正在使用 MailChimp 来处理电子邮件活动。
给定一个名为 User 的 ActiveRecord 模型和一个名为 email 的属性,我如何在成功创建新用户后将用户的电子邮件发送到 MailChimp 列表?
【问题讨论】:
将官方mailchimp-api gem 添加到您的 Gemfile:
gem 'mailchimp-api', require: 'mailchimp'
然后运行:
bundle install
在您的 User 模型中使用 after_create 挂钩将订阅者发送到 MailChimp:
class User < ActiveRecord::Base
after_create :add_mailchimp_subscriber
def add_mailchimp_subscriber
client = Mailchimp::API.new('<your mailchimp api key>')
client.lists.subscribe('<your mailchimp list id>', {email: email}, {'FNAME' => first_name, 'LNAME' => last_name})
end
end
这是您将订阅者添加到 MailChimp 所需的最低要求。您可能希望将 add_mailchimp_subscriber 逻辑移动到它自己的类或排队作业以异步运行它。您还应该添加一些错误处理。 client.lists.subscribe 方法将引发特定于问题的错误。例如,如果您指定的 MailChimp 列表 ID 无效,您将获得 Mailchimp::ListDoesNotExistError。
您可以在此处找到官方 gem 和文档:
【讨论】:
您可以使用 Mailchimp API 来管理列表订阅者:http://apidocs.mailchimp.com/api/2.0/lists/subscribe.php
为了便于在 Rails 中使用,有几个 ruby 包装器:http://apidocs.mailchimp.com/api/downloads/#ruby-rails
因此,在模型更改上添加一些操作的常用方法是使用 Active Records 回调。所以你的代码可能看起来像这样
class User < ActiveRecord::Base
after_create :add_subscriber_to_list
private
def add_subscriber_to_list
# Logic to add subscriber to list via Mailchimp API ruby wrapper
end
end
【讨论】: