0
我有3周型號的爺爺,賓夕法尼亞州,兒童協會排序
GrandPa => has_many :pas
Pa => has_many kids, :polymorphic => true #dont ask why
當我列出了爺爺,我想提出以下
1 - GrandPa_Name
2 - 一覽Pas按小孩每個小孩的數量降序排列
我該如何完成#2?
感謝
我有3周型號的爺爺,賓夕法尼亞州,兒童協會排序
GrandPa => has_many :pas
Pa => has_many kids, :polymorphic => true #dont ask why
當我列出了爺爺,我想提出以下
1 - GrandPa_Name
2 - 一覽Pas按小孩每個小孩的數量降序排列
我該如何完成#2?
感謝
試試這個:
GrandPa.all do |gpa|
p gpa.name
gpa.pas.all(:joins => :kids, :select => "pas.*, count(pas.id) AS kid_count"
:group => :id, :order => "kid_count DESC") do |pa|
p "#{pa.name} : #{pa.kid_count}"
end
end
使用下面的方法,如果你渴望負荷的父母和孩子。
GrandPa.all(:include => {:pas => :kids}) do |gpa|
p gpa.name
gpa.pas.sort_by{|pa| pa.kids.size}.reverse_each do |pa|
p "#{pa.name} : #{pa.kids.size}"
pa.kids do |kid|
p kid.name
end
end
end
優秀。奇蹟般有效。第三行只有一個小改動(pas.id)。這是最好的與這個小的SQL拋出或一般你用這個SQL語法得到更好的性能? 謝謝! – badnaam 2010-07-20 03:12:48
如果您不願意爲每位家長加載孩子,這是高效的解決方案。否則看看提供的第二個解決方案。 – 2010-07-20 03:18:53