作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将拥有两个 Rails 应用程序,一个是成熟的,另一个是精简的。这两个应用程序都有自己的数据库,它们将使用 API 相互通信。
我有两个这样的模型(在两个应用程序中):
class Scan < ApplicationRecord
has_many :background_processes, dependent: :destroy
end
class BackgroundProcess < ApplicationRecord
belongs_to :scan
end
background_processes
)将具有不同的
scan_id
.
最佳答案
我建议使用另一个 索引 scan
上的列您可以在其中存储可用于查询扫描记录的另一个 id 或 token 的模型。也许叫它sync_id
或者其他的东西。
如果走这条路,就不用担心scan_id
的不同了s 关于后台进程的记录。请务必使用扫描的 JSON 正文发送后台进程记录。 (假设您使用 JSON 作为 API 的格式。)
这是一般的想法......您将确保您的发送 API 服务发送整个扫描记录以及相关的后台进程。接收API服务,则需要使用该扫描记录sync_id
查询现有的扫描记录并更新它。您还需要在后台进程记录上使用某种唯一标识符,以确保您不会创建重复项。如果需要,创建一个 sync_id
在后台进程上也是如此。如果具有该 id 的扫描记录不存在,则创建它和依赖的后台进程。
本质上,发送服务的 API POST 请求可能如下所示:
{
id: 1,
sync_id: "sometoken"
... # other record columns
background_process: [
{
id: 123,
... # other record columns
}
]
}
sync_id
你使用的是独一无二的。在扫描模型中使用类似的东西在 before_create 钩子(Hook)上生成它:
def set_sync_id
random_token = SecureRandom.urlsafe_base64
while Scan.where(sync_id: random_token).present? do
random_token = SecureRandom.urlsafe_base64
end
self.sync_id = random_token
end
关于ruby-on-rails - rails : How to manage associations between two tables syncing data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257202/
我是一名优秀的程序员,十分优秀!