sql >> Database >  >> RDS >> Mysql

Rails 3 - Gretig laden met voorwaarden

Voeg een nieuwe koppeling toe met de naam published_pages (behalve je huidige associaties)

class Category

  has_many   :children,        :class_name => "Category", 
               :foreign_key => "parent_id"
  has_many   :published_pages, :class_name => "Page", 
               :conditions  => { :is_published => true }

end

Nu kunt u alle categorieën als volgt verkrijgen:

self.categories.includes(:children, :published_pages)

Als je wilt weten waarom je aanpak niet werkte, lees dan de Rails documentatie (scroll 10-15 regels na het Eager loading of associations sectie). Ik heb het relevante fragment hieronder toegevoegd:

Om gefilterde rijen van een associatie te laden, gebruik je een associatie met voorwaarden:

class Post < ActiveRecord::Base
  has_many :approved_comments, :class_name => 'Comment', 
             :conditions => ['approved = ?', true]
end

Post.find(:all, :include => :approved_comments)



  1. Hoe Adminer op zijn eigen app te installeren

  2. DOE MEE met drie tafels

  3. Wat is het verschil tussen AS en IS in een opgeslagen procedure van Oracle?

  4. Kan geen databasetabel met de naam 'gebruiker' maken in PostgreSQL