如何通过关联模型的created_at日期对模型进行排序?

时间:2014-07-12 00:33:03

标签: ruby-on-rails activerecord

鉴于:

  

公司has_many :customers

     

客户has_many :messages

我想按照发送的最后一条消息的created_at日期对客户列表进行排序。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我知道的最好方法是merging scopes

class Customer < ActiveRecord::Base
  has_many :messages

  scope :by_most_recent_message, -> {
    joins(:messages).merge(Message.by_most_recent)
  }
end

class Message < ActiveRecord::Base
  scope :by_most_recent, -> { order(:created_at).reverse_order }
end

然后你可以拨打company.customers.by_most_recent_message