我正在使用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作为执行的输出。
有问题吗?
我是否可以考虑返回值,以了解查询是否影响了行(如果为真),否则不会。
发布于 2016-05-11 22:30:58
(如果不是直接在生产环境中运行查询)
检查是否找到任何包含fencing_token < 199的记录,如下所示:
User.where(id: 143).where('fencing_token < ?',199)你应该不会得到任何记录。
发布于 2016-05-11 23:49:36
在ActiveRecord::Relation对象上运行update_all将返回受更新影响的行数(整数)。因此,如果您期望一个查询结果,并且update_all的输出为1,则可以认为该记录受到了影响。
我不知道您的应用程序,但是如果用户id对于该用户记录是唯一的,那么在Rails中更传统的做法是通过执行User.find(143),然后使用update方法而不是update all来检索它,因为您将只更新一条记录。
https://stackoverflow.com/questions/37165289
复制相似问题