2013-05-04 2 views
0

Я проанализировал файл .xls с помощью roo и сохранил данные в реляционной базе данных. Теперь я хочу показать эти строки снова, как это было в .xls раньше. То есть, я должен присоединиться к 3 таблицам. Как это сделать в Rails с использованием активных методов записи?Объединение таблиц в Rails

Предположим, у меня есть 3 стола: Category, Subcategory и Item. Мне нужно показать информацию из этих трех таблиц. Я сделал что-то подобное в своих моделях: category has_many subcategory и subcategory has_many items (с соответствующим belongs_to, конечно). Как я буду повторять в каждом category и получить subcategory и items в активном режиме записи?

+0

Вы можете использовать [ 'joins'] (http://guides.rubyonrails.org/active_record_querying.html#joining-tables). – Mischa

ответ

0
categories= Category.all 

sub_categories = categories.collect{|category| category.subcategories }.compact 

items = sub_categories.collect{|sub_cat| sub_cat.items}.compact 

что-то, как это должно работать

0

Чтобы получить категории, подкатегории и предметы, используя активную запись:

@categories = Category.includes(:subcategories => :items) 

Это будет нетерпеливый нагрузки ассоциации, и избежать N + 1 выберите вопросы.

Затем вы можете перебирать их, как обычно, с помощью each:

@categories.each do |c| 
    c.subcategories.each do |s| 
    s.items.each do |i| 
     # do something with item i 
    end 
    end 
end 
Смежные вопросы