在我的申请中我有
class Volunteer < ActiveRecord::Base
has_many :reports
end
class Report < ActiveRecord::Base
belongs_to :volunteer
end
每个志愿者都有一个存储志愿者所属类别的领域(导演,主管,将军)
我使用简单的搜索表单来获取特定时间段内的所有报告,我想通过Volunteer.category将结果拆分为三个单独的数组。
在控制器中分割结果的最佳方法是什么?
答案 0 :(得分:1)
如果您开始使用一系列报告(AR关系),您可以尝试:
category_a = reports.joins(:volunteer).where("volunteers.category = ?", "a")
......等等。这将返回一个ActiveRecord关系对象而不是一个数组,但它同样可以枚举和更快。如果由于某种原因你真的需要一个数组,你可以尝试:
category_a = reports.select { |report| report.volunteer.category == "a" }
测试这样的集合生成的一个技巧是在控制台中尝试它,看看它是否能让你想要它,然后再添加将它放入控制器并在那里进行测试的麻烦。