Как автоматически добавлять подписку на рассылку в ваши контакты - PullRequest
0 голосов
/ 20 марта 2019

После прочтения SendGrid API , Я не знаю, куда поместить код , который они предоставляют для фактического добавления подписок на новостную рассылку в список онлайн-контактов автоматически, вместо того, чтобы вручную копироватькаждый из моей базы данных.

Добавить одного получателя [POST]

Запрос

POST https://api.sendgrid.com/v3/contactdb/recipients HTTP/1.1

Тело запроса

[
  {
    "email": "example@example.com",
    "last_name": "Jones",
     "pet": "Fluffy",
    "age": 25
  }
]

У меня есть модель с именем Newsletter, и я могу добавить пользователей в базу данных моего приложения и отправить электронное письмо с подтверждением/ подтверждено с помощью:

<%= simple_form_for @newsletter, url: newsWelcome_path do |f| %>
  <%= f.input :name, label: false, placeholder: "First Name", class: "form-control" %>
  <%= f.input :email, label: false, placeholder: "Email Address", class: "form-control" %>
  <%= f.button :submit, "Sign up!", class: "submit btn btn-block btn-info" %>
<% end %>

Вот информационный бюллетень Controller:

def new
  @newsletter = Newsletter.new
  set_meta_tags noindex: true
end

def create
  @newsletter = Newsletter.new(news_params)
  if @newsletter.save
    @newsletter.send_verification_email
    flash[:info] = "Please check your email for verification, Thanks!"
    redirect_to newsWelcome_path
  else
    flash[:warning] = "Oops! We couldn't send the verifiaction email, please try again!"
    redirect_back fallback_location: root_path
  end
end

...

private

  def news_params
    params.require(:newsletter).permit(:name, :email)
  end

Нужно ли поместить это в мои файлы окружения, newsletterController, Model или как?

Я прочитал этот вопрос , но он все еще оставляет вопрос о том, куда все это идет.

1 Ответ

0 голосов
/ 20 марта 2019

Вы должны использовать хук ActiveRecord after_create, чтобы добиться этого.Эти хуки / обратные вызовы вызываются на разные события.Метод, указанный в after_create, будет вызываться при успешном создании новой записи.

Он может выглядеть следующим образом:

class Newsletter < ApplicationRecord
  after_create :send_newsletter
  after_create :add_to_sendgrid

  def send_newsletter
    send_verification_email # remove from controller
  end

  def add_to_sendgrid
    # Create the payload and send the request to sendgrid from here
  end
end
...