我有两个模型,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
答案 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