Вызов API для проверки поля перед сохранением, будет ли это сделано в before_save или внутри контроллера? - PullRequest
1 голос
/ 03 февраля 2020

Предисловие:

В моем приложении у меня есть модель с именем Order, которая содержит стороннюю order_id, которую мне нужно проверить перед сохранением. Чтобы проверить правильность идентификатора, я вызываю API для их конечной точки проверки заказа.

Вопрос:

Где именно я должен выполнить эту проверку в приложении rails? Моим первым логическим выбором был контроллер:

  def create
    order_id = params[:joint_membership_application][:order_id]

    # API call to check order status, true = order ID is verified
    if @client.order_valid?(order_id)
      @membership_app = JointMembershipApplication.create!(membership_app_params)

    # ...
  end

Но я всегда читаю, что бизнес-логика c должна жить внутри моделей, а не контроллеров. Будет ли плохой практикой делать вызов API внутри before_save обратного вызова для модели? Если бы я поместил этот лог c в модель, мне нужно было бы создать экземпляр API-клиента при сохранении, что кажется немного странным.

Я вполне мог бы переосмыслить это, но хотел услышать от людей с рельсами опыт того, где именно я должен выполнять такую ​​проверку. Спасибо!

1 Ответ

1 голос
/ 04 февраля 2020

Я бы поместил его в контроллер и использовал Sidekiq для асинхронного выполнения c проверки (перемещение логи c в рабочий).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...