J'ai hérité d'une application Web avec les tables suivantes: Catégories, Sous-catégories et Pages. Pages a des colonnes category_id et sub_category_id.Rails 3 - Chargement en cours sur une base de données existante
J'ai besoin d'écrire une requête efficace pour les pages de charge désireux par catégorie et sub_category pour itérer à mon avis (exemple brut ci-dessous):
- 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
Sous-catégorie. 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
J'ai expérimenté avec des requêtes comme le sont concernés suivants avec peu de succès où les sub_categories:
Category.includes(:sub_categories, :pages).where('pages.is_active = 1')
Catégories fonctionne très bien, mais je ne suis pas sûr de savoir comment désireux charge les sub_categories. Merci d'avance, toute aide est grandement appréciée.
Merci, Noel. Cela a fonctionné comme un charme (j'ai réécrit la syntaxe pour Activerecord 3) et le rendu est passé de 1200ms à 200ms. Merci encore. – TMB
Il y a une nouvelle syntaxe pour Active Record 3 ???? Pourquoi on ne m'en a pas parlé? :) –