在我的应用中,对话有很多消息。如何在创建/保存该对话中的新消息时更新对话的updated_at
属性?
我知道:touch => true
,它会这样做,但它也会在消息被销毁时更新对话,这不是我想要的。
感谢。
模型
class Conversation < ActiveRecord::Base
has_many :messages
end
class Message < ActiveRecord::Base
belongs_to :conversation
end
答案 0 :(得分:56)
您也可以在关系上定义它。
class Message < ActiveRecord::Base
belongs_to :conversation, touch: true
end
(来源与William G的答案相同:http://apidock.com/rails/ActiveRecord/Persistence/touch)
答案 1 :(得分:40)
在Message class
中使用回调after_save do
conversation.update_attribute(:updated_at, Time.now)
end
答案 2 :(得分:9)
我更喜欢Rails 3的解决方案:
class Message < ActiveRecord::Base
belongs_to :conversation
after_save :update_conversation
def update_conversation
self.conversation.touch
end
end