Ruby on rails 按多个唯一属性筛选ActiveRecord查询并合并结果
在我的rails项目中,我有一个查询,通过关联的投票日期查找最近的10个竞赛和订单:Ruby on rails 按多个唯一属性筛选ActiveRecord查询并合并结果,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,在我的rails项目中,我有一个查询,通过关联的投票日期查找最近的10个竞赛和订单: @contests = Contest.find( :all, :limit => "10", :include => :polls, :order => "polls.start_date DESC" ) 目前,它显示每个竞赛,然后通过相关联的投票进行迭代,按投票开始日期对主列表进行排序 其中一些竞赛具有相同的:geo、:office和:cd属性。我想在视图中合并这些内容,因此我不想
@contests = Contest.find(
:all,
:limit => "10",
:include => :polls,
:order => "polls.start_date DESC" )
目前,它显示每个竞赛,然后通过相关联的投票进行迭代,按投票开始日期对主列表进行排序
其中一些竞赛具有相同的
:geo
、:office
和:cd
属性。我想在视图中合并这些内容,因此我不想列出每个竞赛并迭代每个相关的投票(就像我现在所做的那样),我想迭代每个独特的组合:geo
,:office
和:cd
,然后针对每个“组,”无论关联的contest
如何,迭代所有关联的轮询,并按轮询进行排序。开始日期。
我希望这样做,而不必在数据库中创建更多的cruft。除非我误解了,否则我想您可能正在查找以下内容:
@contests.group_by { |c| [c.geo, c.office, c.cd] }
它会给你一个散列,键入
[c.geo,c.office,c.cd]
,每个条目都包含一系列共享该组合的竞赛。除非我误解了,否则我想你可能在寻找:
@contests.group_by { |c| [c.geo, c.office, c.cd] }
它提供一个散列,键入[c.geo,c.office,c.cd]
,其中每个条目都包含一个共享该组合的竞赛数组