这可能听起来像是一个奇怪的请求,但是,我使用的是印象派,并使用缓存的命中列。我每次获得点击时也会更新另一列,这是一个单独的计算。
我现在不想更新updated_at,有没有办法跳过它?
if impressionist(@topic, "message...", :unique => [:session_hash])
@topic.increment(:exp, 1).save
end
由于
答案 0 :(得分:7)
来自ActiveRecord::Persistence
的{{3}}方法可以满足您的需求。
答案 1 :(得分:6)
除了禁用整个类的时间戳(不是线程安全的)之外,您还可以禁用单个实例的时间戳:
@topic.record_timestamps = false
@topic.increment(:exp, 1).save
在为其重新启用时间戳之前,此实例不会创建或更新时间戳。这仅影响此特定实例,其他实例(即使它们引用数据库中的同一行)也不受影响。
答案 2 :(得分:4)
只需在record_timestamps
之前停用increment
:
ActiveRecord::Base.record_timestamps = false
@topic.increment(:exp, 1).save
ActiveRecord::Base.record_timestamps = true
Is there a way to avoid automatically updating Rails timestamp fields?
线程安全版本:update dataset without updating magic timestamp columns