我正在使用update_all更新数据库中的信息
首先我的SQL看起来像这样。
UPDATE "users" SET "tag" = 'D', "fencing_token" = 199, WHERE "user"."id" = $1 AND (fencing_token < 199) [["id", 143]]
注意where子句fencing_token
现在我的update_all
看起来像这样
User.where(id: 143).where('fencing_token < ?',199).update_all({tag: 'D',fencing_token: 199})
有没有办法知道以下SQL查询是否影响了该行。
我看到update_all
返回true/false
作为执行的输出。
问题?
我是否可以考虑返回值以了解查询是否影响了行(如果为true),否则不会。
答案 0 :(得分:0)
(如果您没有直接在生产上运行查询)
检查您是否找到fencing_token < 199
的任何记录,如下所示:
User.where(id: 143).where('fencing_token < ?',199)
你应该没有记录。
答案 1 :(得分:0)
在ActiveRecord :: Relation对象上运行update_all将返回受UPDATE影响的行数(整数)。因此,如果您期望一个查询结果并且update_all的输出为1,则可以将该记录视为受影响。
我不知道您的应用程序,但如果用户ID是该用户唯一的记录,则在Rails中更常规,通过执行User.find(143)然后使用更新方法而不是更新全部来检索它你只会更新一条记录。