2010-10-15 13 views

risposta

60

Devi solo essere più attenti con l'ordine dei metodi in questo caso:

Student.includes(:teacher).find(12) 
+0

che sembra non funzionare. – 99miles

+2

Bene cosa sta facendo? Puoi sempre usare il vecchio metodo: 'Student.find (12,: include =>: teacher)' –

+2

Ottiene il record con l'ID 12, ma senza gli include. Il "vecchio" modo non funziona più in 3.0. Posso farlo funzionare in questo modo Student.find_by_id (12) .to_json (: include =>: teacher) ma non è quello che voglio – 99miles

0

Si potrebbe provare a "dove" al posto di "trovare":

Student.includes(:teacher).where(:id => 12) 
+0

; (a parte questo non funziona né – 99miles

+0

Ho provato qualcosa di simile su uno dei miei modelli e ha funzionato in Rails 3, sei sicuro di avere le relazioni "belongs_to" e "has_many"? –

+0

Sì, è molto strano b/c funziona bene quando inserisco l'inclusione nel metodo to_json, quindi sembra che tutto sia impostato bene . – 99miles

1
Student.includes(:teacher).where(:id => 12) 

dovrebbe funzionare.

Possiamo vedere i tuoi modelli?

6

vecchia questione che conosco ma solo nel caso che questo aiuta qualcuno ...

fare qualcosa di simile @student = Student.includes(:teacher).where(:id => 12) restituisce un array e così poi usando qualcosa come @student.id non funziona.

Invece si potrebbe fare:

@student = Student.includes(:teacher).where(:id => 12).first 

Anche se Student.includes(:teacher).find(12) dovrebbe funzionare, ma è possibile utilizzare la versione where se avete bisogno di cercare da altri più campi /.