Rails eager loading, möglich Bug
-
21-08-2019 - |
Frage
In meinem Rails 2.3.2 app
Ich habe 2 Modelle:
class Post
has_many :approved_comments, :class_name => 'Comment', :conditions => ['approved => ?', true]
end
class Comment
belongs_to :post
end
Aus irgendeinem Grund, wenn ich zu eifrig Last von mir versuchen, ich erhalte eine Fehlermeldung
post = Post.find(:first, :conditions => ["permalink=?", permalink], :include => :approved_comments
undefined method `loaded?' for #
Von association_preload.rb Linie 228
Ist das ein bekanntes Problem, oder mache ich etwas falsch oder nicht unterstützt?
Ich scheine eine wenig Diskussion darüber zu finden unter:
Lösung FWIW, Ich glaube, ich habe hier oben messed kann, hatte ich approved_comments zweimal in meiner Klasse definiert. Die unglückliche Nebenwirkung ich entdecken, war, dass eifrig Laden mit dieser Filterung spielt auf und geht in der Hölle kommt nach links. So arbeitete ich um es von allem und Filterung in Code auswählen.
Andere Tipps
Sie könnten versuchen, so etwas wie:
class Post
has_many :approved_comments, :class_name => 'Comment'
end
class Comment
belongs_to :post
end
und dann so etwas wie:
Post.find(:all, :joins => :approved_comments, :conditions => ["comments.approved = ? AND permalink = ?", true, permalink], :include => :approved_comments)
Damit werden alle Beiträge, die Sie wollen, und dann eifrig Last die Kommentare für sie. obwohl in einem großen Datensatz würde ich davon abraten, es wird langsam sein und ausblasen der Speichergröße der Fahrgast- / Mischlings Instanz.