rails active record:使用join更新表

Sar*_*wan 7 activerecord ruby-on-rails

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

对于条件,Projects通过ref_id知道任务,但不是相反的方向.所以,一旦从连接中找到匹配项,我想设置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
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何使用rails中的活动记录来实现此目的?

shi*_*ara 0

您可以通过直接传递 sql 来做到这一点

Task.connection.update_sql("UPDATE FROM task AS t LEFT JOIN projects as p ON t.ref_id = #{p.ref_id} SET t.project_id = #{p.id}")
Run Code Online (Sandbox Code Playgroud)