ruby activerecord在检索记录时触摸记录

ruby activerecord在检索记录时触摸记录,ruby,activerecord,Ruby,Activerecord,我们可以在执行select语句时触摸一下记录,这样就不会多次调用数据库了吗 我的问题是 每当我像这样检索用户时,我需要更新“updated_at”字段 否则会有多个电话 首先检索用户 a = User.find_by_username("a") 然后更新“更新的位置” 请建议AFAIK在使用ActiveRecord(或任何ORM)的一个sql查询中无法执行选择和更新。正如您在中所看到的那样,在查找后有一个回调。因此,您应该能够在模型中使用此功能来触摸自身: class User < Ap

我们可以在执行select语句时触摸一下记录,这样就不会多次调用数据库了吗

我的问题是

每当我像这样检索用户时,我需要更新“updated_at”字段

否则会有多个电话

首先检索用户

a = User.find_by_username("a")
然后更新“更新的位置”


请建议

AFAIK在使用ActiveRecord(或任何ORM)的一个sql查询中无法执行
选择
更新

正如您在中所看到的那样,在查找后有一个
回调。因此,您应该能够在模型中使用此功能来触摸自身:

class User < ApplicationRecord
  after_find { touch }
  ...
end
class用户

请注意,这很可能仍然会触发两个sql查询(因此我认为他的答案仍然正确),但作为开发人员,您不必键入额外的调用,也不太可能忘记它

2个问题似乎没那么糟糕。可能是,如果您分担更大的问题,例如获取和更新100条记录,您将得到更好的答案。
User.find_by_username("a").touch
class User < ApplicationRecord
  after_find { touch }
  ...
end