sql >> Database teknologi >  >> RDS >> Mysql

Skinner 3 - Ivrig lastning med betingelser

Tilføj en ny tilknytning kaldet published_pages (bortset fra dine nuværende foreninger)

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 kan du få alle kategorierne som følger:

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

Hvis du er interesseret i at lære, hvorfor din tilgang ikke virkede, kan du læse Rails dokumentationen (rul 10-15 linjer efter Eager loading of associations afsnit). Jeg har inkluderet det relevante uddrag nedenfor:

For ivrig at indlæse filtrerede rækker af en tilknytning skal du bruge en tilknytning med betingelser:

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

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



  1. VÆLG $ (dollartegn)

  2. multibillede upload forkert antal ved fil-upload

  3. mysql.h filen kan ikke findes

  4. Få maskinskrevne resultater fra ActiveRecord rå SQL