25

我有一个问答应用程序。每次有人添加问题的答案时,我都想更新问题的 updated_at 时间戳。

因此,我在 Answer 模型中使用了触摸。

  belongs_to :question, :touch => true

但是,似乎在没有添加答案时时间戳正在更新。我试图弄清楚如何/为什么。这只是在添加此触摸方法后才发生。

所以我想确认何时触发触摸?是否仅在创建、编辑或销毁答案对象时?还有其他活动吗?即在特定情况下不应该仅通过查看答案对象来触发它吗?

我找不到任何可靠的文档来描述 touch 在 belongs_to 关系的上下文中是如何工作的。

这有点令人费解的原因是该应用程序相对简单,并且在提交后不给用户任何编辑或销毁答案的功能。

4

1 回答 1

33

来自:http ://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

:touch 如果为 true,则在保存或销毁此记录时,将触摸关联的对象(updated_at/on 属性设置为 now)。如果您指定了一个符号,那么除了 updated_at/on 属性之外,该属性还将使用当前时间进行更新。

belongs_to :company, :touch => true

belongs_to :company, :touch => :employees_last_updated_at

于 2012-12-19T13:25:01.513 回答