Rails 3 - готовая загрузка в устаревшей базе данных - PullRequest
0 голосов
/ 04 августа 2010

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

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

- 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

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

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

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

1 Ответ

0 голосов
/ 04 августа 2010

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

Category.find( :all, :include => [ :pages, { :sub_categories => :pages } ] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...