如何在给定以下模型的情况下有效检索数据

时间:2011-05-27 01:15:18

标签: ruby-on-rails activerecord

这可能是已被问过但我无法找到的东西。我有一个包含以下三列的模型:[“id”,“category”,“name”],我想像这样组织我的页面:

标题(所有类别的列表,链接到包含该类别所有名称的表格以及该类别下的名称数量)

  • 第1类:5个名字
  • 第2类:7个名字
  • 第3类:4个名字

内容(每个类别一个表,列出该类别下的所有名称)

  • 表“类别1”:“name1”,“...”name5“
  • 表“类别2”:“name1”,“......”name7“
  • 表“类别3”:“name1”,“......”name4“

为了达到这个目的,我基本上需要一个名称集合的类别地图,没什么太花哨但我想知道最佳实践是什么。首先获取所有类别,然后为每个类别运行一个查询以获取名称似乎并不高效。我在java中会做的是获取结果集中的所有内容,迭代它并构建我提到的地图。不确定如何在rails中实现这一目标。

谢谢,

1 个答案:

答案 0 :(得分:1)

h = {}                                                                       
MyModel.all.sort_by(&:category).each do |m|                                                      
  h[m.category] ||= []                                                       
  h[m.category] << m.name                                                    
end                                                                          

h.each do |category, names|                                                  
  puts "#{category}: #{names.count} names"                                   
end                                                                          

h.each do |category, names|                                                  
  puts "#{category}: #{names.sort * ', '}"                                        
end