2011-05-27 42 views
1

它可能是已經被問到的東西,但我無法找到它。我有一個模型,其中包含以下三列:[「ID」,「類別」,「名稱」],我想像這樣組織我的頁面:如何有效地檢索給定以下型號的數據

標題(所有類別的列表,鏈接到表與所有下該類別中的名字的名字的該類別和計數)

  • 類別1:5名
  • 類別2:7名
  • 類別3:4名

內容(一個ta每個類別的竹葉提取列出所有該類別下的名稱)

  • 表「1類」:「名1」,「...」 NAME5」
  • 表‘2類’:‘名1’,‘...’name7」
  • 表「3類」:「名1」,「...」 NAME4」

要做到這一點基本上,我需要地圖類別以名稱的集合,沒有什麼太花哨,但我想知道是什麼最好的做法是。首先獲取所有類別,然後對每個類別運行一個查詢以獲取名稱似乎並不高效。我會在java中做的是在結果集中獲取所有內容,遍歷它並構建我提到的映射。不知道如何在rails中實現這一點。

感謝,

回答

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                   
+0

謝謝!不知道你爲什麼排序模型的集合呢? – RaySF 2011-05-27 05:20:42

+1

在Ruby> = 1.9中,散列保留了插入順序,所以類別名稱應按照您的示例中的順序打印: – Mori 2011-05-27 13:02:06

+0

不錯,感謝您的信息! – RaySF 2011-05-27 15:40:24

相關問題