Rails使用相关记录对数组结果进行分组

时间:2015-03-25 14:37:16

标签: ruby-on-rails

在我的申请中我有

class Volunteer < ActiveRecord::Base
  has_many :reports
end

class Report < ActiveRecord::Base
  belongs_to :volunteer
end

每个志愿者都有一个存储志愿者所属类别的领域(导演,主管,将军)

我使用简单的搜索表单来获取特定时间段内的所有报告,我想通过Volunteer.category将结果拆分为三个单独的数组。

在控制器中分割结果的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您开始使用一系列报告(AR关系),您可以尝试:

category_a = reports.joins(:volunteer).where("volunteers.category = ?", "a")

......等等。这将返回一个ActiveRecord关系对象而不是一个数组,但它同样可以枚举和更快。如果由于某种原因你真的需要一个数组,你可以尝试:

category_a = reports.select { |report| report.volunteer.category == "a" }

测试这样的集合生成的一个技巧是在控制台中尝试它,看看它是否能让你想要它,然后再添加将它放入控制器并在那里进行测试的麻烦。