我和這個人有幾乎相同的問題:http://www.ruby-forum.com/topic/197440。ActiveRecord touch(:列)總是也會更新:updated_at
我試圖觸摸一列(:touched_at
)而沒有自動更新:updated_at
,但看着SQL查詢,它總是更新到當前時間。
我認爲這可能與我使用它的特定模型有關,所以我嘗試了幾個不同的結果。
有誰知道什麼可能導致它總是設置:updated_at
時觸摸不同的列? touch
內部使用write_attribute
,所以它不應該這樣做。
編輯:
一些澄清...了Rails 2.3.5文檔的touch
狀態,「如果一個屬性名被傳遞,該屬性用於觸摸代替的updated_at /上屬性。 「但我的行爲並非如此。也許這是一個文檔偏離代碼的實際狀態的情況?
這似乎是唯一的方法。看起來Rails 2.3.5文檔是錯誤的。我想添加回答,我可以在模型的回調中加入'touch!'方法來完成對ActiveRecord'belongs_to''s':touch =>:column'的功能的複製(我認爲它使用'before_save '和'before_destroy',但我必須檢查源代碼)。 – tfe 2010-09-23 18:50:36
'.update_all({:touched_at => Time.now.utc},{:id => self.id})'已被棄用,以支持'self.class.where(id:self.id).update_all touched_at:Time.now.utc)' – astephenb 2014-11-19 21:34:44