我继承了一个包含以下表格的网络应用程序:Categories,SubCategories和Pages。 Pages有category_id和sub_category_id列。
我需要按类别和sub_category为eager加载页面写一个有效的查询,以便在我的视图中进行迭代(粗略示例如下):
- 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
SubCategory.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
我已经尝试了以下类似的查询,但在涉及sub_categories方面收效甚微:
Category.includes(:sub_categories, :pages).where('pages.is_active = 1')
类别效果很好,但我不确定如何加载sub_categories。在此先感谢,任何帮助都非常感谢。
答案 0 :(得分:0)
根据this article,我只是在看这样的事情可能会做你想要的事情:
Category.find( :all, :include => [ :pages, { :sub_categories => :pages } ] )