2010-08-04 1 views
0

Я унаследовал веб-приложение со следующими таблицами: Категории, Подкатегории и Страницы. Страницы имеют рубрики category_id и sub_category_id.Rails 3 - Яркая загрузка по старой базе данных

Мне нужно написать эффективный запрос для нетерпеливых загрузки страниц по категориям и sub_category для итерация на мой взгляд (грубый пример следующим образом):

- Category One (categories.each do |category|...) 
-- Page One (category.pages.each do |page|...) 
-- SubCategory One (category.sub_categories.each do |sub_category|... 
---- Page Two (sub_category.pages.each do |page|...) 

Category.rb:

class Category < ActiveRecord::Base 
    has_many :pages 
    has_many :sub_categories 
end 

подкатегорию. гь:

class SubCategory < ActiveRecord::Base 
    belongs_to :category 
    has_many :pages 
end 

Page.rb:

class Page < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :sub_category 

    scope :active_pages, :conditions => {:is_active => true} 
end 

Я экспериментировал с запросами, как следующий с небольшим успехом, где заинтересованные sub_categories:

Category.includes(:sub_categories, :pages).where('pages.is_active = 1') 

Категория прекрасно работает, но я не уверен, как нетерпеливые нагрузки на sub_categories. Спасибо заранее, любая помощь очень ценится.

ответ

0

this article в соответствии с которой я был просто глядя на то, как это может делать то, что вы хотите:

Category.find(:all, :include => [ :pages, { :sub_categories => :pages } ]) 
+0

Спасибо, Ноэль. Это работало как прелесть (я переписал синтаксис для Activerecord 3), а рендеринг - с 1200 мс до 200 мс. Еще раз спасибо. – TMB

+0

Появился новый синтаксис для Active Record 3 ???? Почему я не сказал об этом? !!! :) –

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