【发布时间】:2017-03-16 22:46:27
【问题描述】:
我正在使用 group by 子句从表中检索一些数据,之后我想为初始查询检索到的所有记录更新单个列值。
所以我需要确保从初始查询到我更新记录之前没有添加新行。
解释:假设模型 Test 有 5 列:Id A B C Status
所以我首先查询如下:
Test.select('count(*), A, B').where(status:'new', C: 'value').group('A, B')
在我处理完代码中的组后,我想将初始查询中 used 的所有记录的状态更改为 done
问题是,如果我只是这样做:
Test.where(status: 'new', C: 'value')
为了现在使用update_all,自第一个回答此条件的查询以来,有可能将新记录添加到表中,我会将它们的状态设置为“完成”,尽管它们并没有真正被处理,因为在初始查询它们不存在。
所以基本上我需要一种方法来锁定从初始查询到更新的插入表,或者以某种方式获取在查询组中“考虑”的 id 列表。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord rails-activerecord