在Rails 4中,如何查询具有最多关联数的记录?

时间:2014-10-04 23:53:40

标签: ruby-on-rails-4 associations

我有两个模型,CheckIn和Consumer。这个想法是消费者可以多次登记。我想在Consumer模型中定义一个函数,它允许我返回具有最多CheckIns的顶级x_number消费者,从最高到最低的CheckIns数量排序。

class Consumer < ActiveRecord::Base
  has_many :check_ins, dependent: :destroy

  def with_most_checkins( num_to_show )
    # ???
  end
end

class CheckIn < ActiveRecord::Base
  belongs_to :consumer
end

1 个答案:

答案 0 :(得分:0)

借助这些帖子弄清楚:

现在我可以使用前三名消费者:

Consumer.with_most_checkins(2)

在Consumer模型类中使用范围:

class Consumer < ActiveRecord::Base
  has_many :check_ins, dependent: :destroy
  has_many :promo_codes

  validates :email, :email => true

  scope :with_most_checkins, ->(num_to_show) {  select("consumers.*, count( check_ins.id ) AS check_ins_count").
      joins(:check_ins).
      group("consumers.id").
      order("check_ins_count DESC").
      limit(num_to_show) }

end