2011-01-05 3 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 

UPDATE Как его использовать включить в себя заказ?Как подать заявку: включить в этот сценарий?

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

Возможно ли это?

+0

Какую версию рельсов вы используете? 2 или 3? – CodeJoust

+0

rails version 2.3.9 –

+0

Я отредактировал свой ответ. – CodeJoust

ответ

1

См: 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') 

Если item_seq не то, что вы хотите отсортировать, вы, вероятно, можно отсортировать с помощью метода рубин сортировки. Насколько я знаю, предложение mysql order в вложенном соединении будет заказывать только одним ограничением в соединении.

+0

Но я хочу получить menu_groups и menu_items с правильным порядком с помощью «group_seq» и ​​«item_seq». Как использовать включить с заказом? –

Смежные вопросы