如果这是一个基本问题,我是铁杆新手如此原谅。我通过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
答案 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