sql >> Databasteknik >  >> RDS >> Mysql

Räls 3 - Ivrig lastning med förhållanden

Lägg till en ny koppling som heter published_pages (bortsett från dina nuvarande föreningar)

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å alla kategorier enligt följande:

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

Om du är intresserad av att lära dig varför ditt tillvägagångssätt inte fungerade, läs Rails dokumentationen (bläddra 10-15 rader efter Eager loading of associations sektion). Jag har inkluderat det relevanta utdraget nedan:

För att ivrigt ladda filtrerade rader i en association, använd en association med villkor:

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

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



  1. Laravel - Ogiltigt parameternummer:parametern definierades inte

  2. tomcat 6.0.24 Undantag:Kunde inte ladda com.mysql.jdbc.SQLError

  3. syntaxfel för mysql-deklaration av variabel

  4. Kan MySQL Nested Välj returlista med resultat