Rails 3 - 在遗留数据库上加载

时间:2010-08-04 06:42:59

标签: ruby-on-rails ruby activerecord

我继承了一个包含以下表格的网络应用程序: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。在此先感谢,任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

根据this article,我只是在看这样的事情可能会做你想要的事情:

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