gpt4 book ai didi

ruby-on-rails - rails 事件记录 : update a table with join

转载 作者:行者123 更新时间:2023-12-04 12:55:48 25 4
gpt4 key购买 nike

我正在做一个 Rails 项目。
我有两个表存储来自不同系统的数据:任务和项目。

在条件下,Projects 通过 ref_id 知道 Tasks,但不是相反的方向。
因此,一旦从连接中找到匹配项,我想将 task.project_id 设置为匹配的 Projects 表的 id。

UPDATE FROM task AS t
LEFT JOIN projects as p
ON t.ref_id = p.ref_id
SET t.project_id = p.id

我的问题是:如何使用 Rails 中的事件记录来实现这一点?

最佳答案

如果您使用 postgres,您可以运行 update_all使用模型中的“连接”,例如:
Task.connection.update_sql("UPDATE tasks AS t SET project_id = p.id FROM projects AS p WHERE t.ref_id = p.ref_id")
注:update_sql在 Rails 5 中不推荐使用 call,应该切换到 update
由于您直接发送 sql,因此您需要确保使用适合您数据库的语法。

关于ruby-on-rails - rails 事件记录 : update a table with join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com