сортировка ассоциаций - PullRequest
0 голосов
/ 20 июля 2010

У меня есть 3 модели GrandPa, Pa, Kid

GrandPa => has_many :pas
Pa => has_many kids, :polymorphic => true #dont ask why

Когда я перечисляю GrandPa, я хотел бы представить следующее


1 - GrandPa_Name

2 - Список Pas, отсортированный по количеству детей в па по убыванию


Как мне достичь # 2?

Спасибо

1 Ответ

1 голос
/ 20 июля 2010

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...