2010-08-04 59 views
0

我繼承了一個帶有下列表格的Web應用程序:Categories,SubCategories和Pages。 Pages有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 

子類別。 RB:

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 

我已經喜歡收效甚微以下查詢實驗,其中 - 行業標準而言:

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

類別的偉大工程,但我不知道負載如何渴望 - 行業標準。在此先感謝,任何幫助,非常感謝。根據this article我只是在尋找這樣的事情可能會做你想要什麼

回答

0

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

謝謝,諾埃爾。這工作就像一個魅力(我重寫了Activerecord 3的語法)和渲染從1200毫秒到200毫秒。再次感謝。 – TMB 2010-08-04 19:48:51

+0

Active Record 3有新的語法?爲什麼我沒有告訴過這個? :) – 2010-08-04 23:20:57