是否可以从 Rails 模型进行 http 调用?



我正在我的系统和外部网络服务之间进行集成。在我的系统中,我有一个Customer模型。客户可以在借记中,但此信息(客户的财务状况(在我的数据库中不可用。它位于我正在集成的网络服务中。

我在此模型中创建了一个方法并将其命名为 is_in_debit? 。在方法实现中,我正在对 Web 服务进行 HTTP 调用。

class Customer < ActiveRecord::Base
  ...
  def is_in_debit?
    response = HTTP.get_response('https://...').body
    response = JSON.parse(response)
    response['status'] == 'active' ? false : true
  end
end

但我怀疑该模型是否是进行HTTP调用的正确位置。从建筑的角度来看,它对吗?还是我应该改变我的方法?

不,您违反了 SRP 原则,在活动记录模型中,您应该只添加访问模型数据的方法。我建议创建一个新对象:

class CustomerService
  def is_in_debit?(user)
     // your http request here
  end
end

相关内容

  • 没有找到相关文章

最新更新