ruby activerecord当我们检索记录时触摸记录

时间:2018-07-09 05:56:59

标签: ruby activerecord

在执行select语句时,我们可以在记录上进行修改吗,这样就不会有对数据库的多次调用

我的问题是

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

User.find_by_username("a")

否则将有多个呼叫。

首先获取用户

a = User.find_by_username("a")

然后更新“ updated_at”

User.find_by_username("a").touch

请提出建议

2 个答案:

答案 0 :(得分:0)

AFAIK无法使用ActiveRecord(也没有任何ORM)在一个SQL查询中执行selectupdate

答案 1 :(得分:0)

如您在the Rails Guide中所见,有一个after_find回调。因此,您应该可以在模型中使用它来触摸自身:

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

请注意,这很可能仍会触发两个sql查询(因此我认为Зелёный的答案仍然正确),但是作为开发人员,您不必键入多余的调用,也不太可能忘记它。