Ответ 1
использовать обратный вызов внутри класса сообщений
after_save do
conversation.update_attribute(:updated_at, Time.now)
end
В моем приложении в разговоре много сообщений. Как обновить атрибут updated_at
диалога, когда создается или сохраняется новое сообщение в этом Разговоре?
Я знаю :touch => true
, который делает это, но также обновляет разговор, когда сообщение уничтожено, что не то, что я хочу.
Спасибо.
Модели
class Conversation < ActiveRecord::Base
has_many :messages
end
class Message < ActiveRecord::Base
belongs_to :conversation
end
использовать обратный вызов внутри класса сообщений
after_save do
conversation.update_attribute(:updated_at, Time.now)
end
Вы можете просто определить его в отношении отношений.
class Message < ActiveRecord::Base
belongs_to :conversation, touch: true
end
(Источник такой же, как у Уильяма G: http://apidock.com/rails/ActiveRecord/Persistence/touch)
Я предпочитаю это решение для Rails 3:
class Message < ActiveRecord::Base
belongs_to :conversation
after_save :update_conversation
def update_conversation
self.conversation.touch
end
end
Источник: http://apidock.com/rails/ActiveRecord/Persistence/touch