Domanda

Nel mio Rails 2.3.2 app

Ho 2 modelli:

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

class Comment
  belongs_to :post
end

Per qualche ragione quando provo a caricare i miei commenti ansiosi, ottengo un errore

post = Post.find(:first, :conditions => ["permalink=?", permalink], :include => :approved_comments
undefined method `loaded?' for #

Per chi proviene da linea association_preload.rb 228

Si tratta di un problema noto, o sto facendo qualcosa di sbagliato o non supportato?

Mi sembra di trovare un po 'di discussione su questo a: http://groups.google.com/group/maine-ruby-users-group/browse_thread/thread/796cf58b62f9bc52

È stato utile?

Soluzione

FWIW,

Penso che forse ho incasinato qui, ho avuto approved_comments definiti due volte nella mia classe. L'effetto collaterale che ho scoperto è che eager loading gioca con quella filtraggio e va a sinistra unirsi all'inferno. Così ho lavorato intorno ad esso selezionando tutto e filtraggio nel codice.

Altri suggerimenti

Si potrebbe provare qualcosa di simile:

class Post
   has_many :approved_comments, :class_name => 'Comment'
end

class Comment
  belongs_to :post
end

e poi qualcosa di simile:

Post.find(:all, :joins => :approved_comments, :conditions => ["comments.approved = ? AND permalink = ?", true, permalink], :include => :approved_comments)

Questo troverà tutti i messaggi che si desidera e quindi del carico ansiosi i commenti per loro. In un ampio set di record lo consiglio contro di essa, però, sarà lenta e spegnere la dimensione della memoria del vostro passeggero / instance bastardo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top