1

after_commit コールバックを介してバックグラウンドでユーザーの Newsletter_info 非同期を更新する sidekiq-job をバックグラウンドで開始しています。したがって、ユーザーが設定で言語を更新すると、MailChimp でも言語が更新されます。メールアドレス以外はすべて正常に機能します。ユーザーがメールアドレスを更新すると、ログメッセージに表示され、正しい場所に表示されますが、mailchimp では更新されません。代わりに、新しいメールアドレスを持つ新しいユーザーが mailchimp リストに割り当てられます...

したがって、古いものを削除することも1つの選択肢かもしれませんが、解決策はきれいではないと思います。

私の他の考えは、おそらくメールアドレスはサブスクライバーIDであり、そこでエラーが発生する可能性があるということです。

ご助力ありがとうございます、

よろしく、カレド。

def update_newsletter_info(args)
  NDC.push "KHALED -- "
  Rails.logger.debug "UPDATENEWSLETTERINFO ARGS: #{args}"
  XIXI::Workflow.for(TwitterUsersMaintainer, args) do |workflow, user|
    Rails.logger.debug "INFOS IN UPDATENEWSLETTERINFO #{user.locale} #{user.email}"
    gb = Gibbon::API.new
    cfg = XOXO::Mailchimp.config

    gb.lists.subscribe(
      :id    => cfg.list_id,
      :email => { :email => user.email },
      :merge_vars => {
        :mc_language => user.locale,
        :groupings => [
          { name: cfg.group_name, groups: [ user.recurring_payment? ? 'basic' : 'free' ] }
        ]
      },
      :double_optin    => !!cfg.double_optin,
      :update_existing => true,
      :send_welcome    => !!cfg.send_welcome
    )

    # continue
    workflow.continue_with(user)
  end
  NDC.pop
end
4

2 に答える 2