通过多个唯一属性过滤ActiveRecord查询并组合结果

时间:2009-11-18 19:47:31

标签: ruby-on-rails ruby activerecord

在我的rails项目中,我有一个查询,根据相关的投票日期查找最近的10个竞赛和订单:

@contests = Contest.find(
:all, 
:limit => "10", 
:include => :polls, 
:order => "polls.start_date DESC" )

目前,这显示了每个竞赛,然后通过轮询开始日期对主列表进行排序的相关民意调查进行迭代。

其中一些竞赛具有相同的:geo:office:cd属性。我想在视图中组合这些,所以我不想列出每个竞赛并迭代每个相关的民意调查(正如我现在正在做的那样),我想迭代:geo的每个独特组合,{ {1}}和:office然后对于每个“群组”,无论关联的:cd如何,都会遍历所有相关的民意调查,并按contest排序我想要这样做,而无需创建在数据库中更加残酷。

1 个答案:

答案 0 :(得分:4)

除非我误解了,否则我想你可能正在寻找这个:

@contests.group_by { |c| [c.geo, c.office, c.cd] }

它为你提供了一个哈希,键入[c.geo, c.office, c.cd],其中每个条目都包含一个共享组合的比赛数组。