2011-01-05 1 views
0
modules=MenuModule.all(:order => "module_seq") 
modules.each do |m| 
    groups=m.menu_groups.all(:order => "group_seq") 
    groups.each do |g| 
    items=g.menu_items.all(:order => "item_seq") 
    items.each do |i| 
     puts i.name 
    end 
    end 
end 

MISE À JOUR Comment utiliser avec une commande?Comment postuler: inclure dans ce scénario?

Something like MenuModule.find(:all,:include => {:menu_groups(:order => "group_seq"), :menu_items(:order => "item_seq")},:order => "module_seq") 

Est-ce possible?

+0

Quelle version de rails utilisez-vous? 2 ou 3? – CodeJoust

+0

rails version 2.3.9 –

+0

J'ai édité ma réponse. – CodeJoust

Répondre

1

Voir: http://www.arraystudio.com/as-workshop/nested-include-activerecord-option.html

MenuModule.all(:include => [{:menu_groups, :menu_items}], :order => 'module_seq,modules.group_seq,modules.groups.item_seq') 

Si le item_seq est pas ce que vous voulez trier, vous pouvez probablement trier en utilisant la méthode de tri rubis. La clause d'ordre mysql dans une jointure imbriquée ne sera ordonnée que par une contrainte dans la jointure, pour autant que je sache.

+0

Mais je veux récupérer menu_groups et menu_items avec l'ordre approprié par "group_seq" et "item_seq". Comment utiliser inclure avec commande par? –

Questions connexes