使用 http 在 rails 中共享模型数据
Model data sharing in rails using http
我有两个 rails 应用程序。假设 App1
和 App2
。 App1
有一个模型,它是我业务的核心,App2
想使用它。
我想的一种方法是创建 PORO
,它模仿 ActiveRecord 功能,但不是与数据库交互,而是与 App1
交互,而不是 HTTP
或 https
.
例如:
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 的唯一用户,您将有机会根据您的用例构建更多自定义端点,这些端点可以尽可能高效地提供您需要的数据。
我有两个 rails 应用程序。假设 App1
和 App2
。 App1
有一个模型,它是我业务的核心,App2
想使用它。
我想的一种方法是创建 PORO
,它模仿 ActiveRecord 功能,但不是与数据库交互,而是与 App1
交互,而不是 HTTP
或 https
.
例如:
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 的唯一用户,您将有机会根据您的用例构建更多自定义端点,这些端点可以尽可能高效地提供您需要的数据。