通过has_many返回rails中每个组的数量

时间:2017-08-22 19:51:07

标签: ruby-on-rails ruby activerecord rails-activerecord

如果这是一个基本问题,我是铁杆新手如此原谅。我通过has_many扩展域名模型

has_many :stream_filters


has_many :active_filters,
               -> { where(active: true) },
               through: :stream_filters,
               source: :filter,
               class_name: 'Filter'

has_many :results,
           -> { distinct },
           through: :active_filters

has_many :latest_results,
           -> { distinct.order('created_at DESC').limit(30) },
           source: :results,
           through: :active_filters

你可以在latest_result中看到我只得到30个。

现在有没有办法按属性对它们进行分组,每组30个?

我尝试了这段代码,但它不起作用,它返回每个组中的一个

has_many :latest_results,
           -> { distinct.group("source_id").order('created_at DESC').limit(30) },
           source: :results,
           through: :active_filters

1 个答案:

答案 0 :(得分:0)

你走了:

latest_results.all.group_by(&:source_id).map! { |source_id, latest_results_of_source| latest_results_of_source.limit(30) }

has_many :latest_results, -> { all.group_by(&:source_id).map! { |source_id, latest_results_of_source| latest_results_of_source.limit(30) } }, source: :results, through: :active_filters