在执行select语句时,我们可以在记录上进行修改吗,这样就不会有对数据库的多次调用
我的问题是
每当我这样检索用户时,我都需要更新“ updated_at”字段
User.find_by_username("a")
否则将有多个呼叫。
首先获取用户
a = User.find_by_username("a")
然后更新“ updated_at”
User.find_by_username("a").touch
请提出建议
答案 0 :(得分:0)
AFAIK无法使用ActiveRecord(也没有任何ORM)在一个SQL查询中执行select
和update
。
答案 1 :(得分:0)
如您在the Rails Guide中所见,有一个after_find
回调。因此,您应该可以在模型中使用它来触摸自身:
class User < ApplicationRecord
after_find { touch }
...
end
请注意,这很可能仍会触发两个sql查询(因此我认为Зелёный的答案仍然正确),但是作为开发人员,您不必键入多余的调用,也不太可能忘记它。