Ruby on rails 如何使用Mailchimp API 3.0和Gibbon 2.x订阅新用户

Ruby on rails 如何使用Mailchimp API 3.0和Gibbon 2.x订阅新用户,ruby-on-rails,mailchimp,ruby-on-rails-4.2,gibbon,Ruby On Rails,Mailchimp,Ruby On Rails 4.2,Gibbon,在我的应用程序中,我希望用户在创建邮件列表时自动订阅邮件列表。我找到的所有文档都集中在MailChipAPI2.0和Gibbon1.x上 以下是我到目前为止的情况: 我创建了一个.env文件,其中包含: MAILCHIMP_API_KEY = "my_api_key" MAILCHIMP_LIST_ID = "my_list_id" 我创建了一个名为gibbon.rb的初始值设定项: Gibbon::Request.api_key = ENV["MAILCHIMP_API_KEY"] Gibb

在我的应用程序中,我希望用户在创建邮件列表时自动订阅邮件列表。我找到的所有文档都集中在MailChipAPI2.0和Gibbon1.x上

以下是我到目前为止的情况:

我创建了一个.env文件,其中包含:

MAILCHIMP_API_KEY = "my_api_key"
MAILCHIMP_LIST_ID = "my_list_id"
我创建了一个名为gibbon.rb的初始值设定项:

Gibbon::Request.api_key = ENV["MAILCHIMP_API_KEY"]
Gibbon::Request.timeout = 15
然后创建了一个作业:

class SubscribeUserToMailingListJob < ActiveJob::Base
  queue_as :default

  def perform(user)
    gibbon = Gibbon::Request.new
    # I am getting errors from this line
    gibbon.lists(ENV["MAILCHIMP_LIST_ID"]).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.name, LNAME: ""}})
  end
end
并在“私人”项下添加了以下内容:

def subscribe_user_to_mailing_list
  SubscribeUserToMailingListJob.perform_later(self)
end
我从gibbon.lists(ENV[“MAILCHIMP\u LIST\u ID”]).members.create(body:{email\u address:user.email,status:“subscribed”,merge\u字段:{FNAME:user.name,LNAME:}})收到400个错误。

********编辑********

根据这个

我认为发生错误是因为列表中已经存在电子邮件地址。我第一次遇到错误时,电子邮件地址被添加到MailChimp列表中,但由于另一个错误,我的应用程序中没有创建该用户。现在,当我尝试创建具有相同电子邮件地址的用户时,会弹出错误400,因为电子邮件已经存在。这也会阻止在我的应用程序中创建用户

请稍有经验的人验证一下这是否正确吗?

您是正确的--如果您正在拨打
POST
电话,并且您正在发布的内容已经存在,您将返回一个错误。在API支持
PUT
之前,更新或订阅是两步操作。检查订阅服务器是否存在,然后使用适当的方法。或者,您可以先尝试
PATCH
,如果404失败,则执行
POST

def subscribe_user_to_mailing_list
  SubscribeUserToMailingListJob.perform_later(self)
end