基于关联的ActiveRecord计算字段

基于关联的ActiveRecord计算字段,activerecord,Activerecord,我有一个会话ActiveRecord模型,基本上如下 class Conversation < ActiveRecord::Base has_many :messages, :order => 'created_at ASC' belongs_to :latest_message, :class_name => 'Message' end 有什么想法吗?在我写问题时找到了答案: has_many :messages, :order => 'created_a

我有一个会话ActiveRecord模型,基本上如下

class Conversation < ActiveRecord::Base
  has_many :messages, :order => 'created_at ASC'
  belongs_to :latest_message, :class_name => 'Message'
end

有什么想法吗?

在我写问题时找到了答案:

  has_many :messages, :order => 'created_at ASC',
           :after_add => :update_latest_message, :after_remove => :update_latest_message

  def update_latest_message(message)
    self.latest_message = self.messages.last
    self.save
  end
ActiveRecord关联回调允许我调用一个在必要时更新消息的方法。如果我不用再打电话给save就好了

  has_many :messages, :order => 'created_at ASC',
           :after_add => :update_latest_message, :after_remove => :update_latest_message

  def update_latest_message(message)
    self.latest_message = self.messages.last
    self.save
  end