前言:
在我的应用程序中,我有一个名为Order
的模型,其中包含一个第三方order_id
,我需要在保存之前对其进行验证。为了验证 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
但我总是读到业务逻辑应该存在于模型中,而不是控制器中。在模型的before_save
回调中进行 API 调用是否是一种不好的做法?如果我将此逻辑放在模型中,则需要在保存时实例化 API 客户端,这似乎有点奇怪。
我很可能想多了,但想听听有铁路经验的人说我应该在哪里执行这种验证。谢谢!
我会把它放在控制器中,并使用 Sidekiq 异步执行验证(将逻辑移动到工作线程中(。