使用 http 在 rails 中共享模型数据

Model data sharing in rails using http

我有两个 rails 应用程序。假设 App1App2App1 有一个模型,它是我业务的核心,App2 想使用它。

我想的一种方法是创建 PORO,它模仿 ActiveRecord 功能,但不是与数据库交互,而是与 App1 交互,而不是 HTTPhttps.

例如:

class User < NetworkRecord
  def self.find(id)
    new.find(id)
  end

  def find(id)
    endpoint = 'https:app1.com/user'
    get(endpoint, { id: id })
  end
end


class NetworkRecord
  def get(endpoint, params)
    Httparty.get(endpoint, params)
  end
end

我不确定这种方法是否太聪明或正确,因为我们将 ActiveModel 的某些功能赋予了一个 Object 而没有继承它。

如果您知道实现相同目标的更好方法,请告诉我。

感觉您的思路与 ActiveResource 相同,它通过 REST 接口为对象提供类似 ActiveRecord 的接口。

如果您打算将两个代码库完全分开,那么某种形式的基于 API 的关系可能是可行的方法。您必须注意的一件事是使用这种方法会产生多少网络流量。如果这两个应用程序将成为您构建的 API 的唯一用户,您将有机会根据您的用例构建更多自定义端点,这些端点可以尽可能高效地提供您需要的数据。