2009-08-25 2 views
6

Ho i modelli Foo e Bar. Bar ha la colonna foo_id. Quando chiamo Bar.foo_id ottengo l'errore missing attribute: foo_idattributo mancante in activerecord

Ricordare che questo non è un errore di metodo non definito e la colonna è sicuramente nel db. Quali sono alcune cause comuni di questo?

Grazie

+0

Come stai caricando la barra? –

risposta

35

Probabilmente ha qualcosa a che fare con il tuo trovare il metodo? Per esempio hai fatto un: selezionare in un ritrovamento:

Foo.find(:all, :select => "firstvar, secondvar") 

In questo caso, si può accedere solo firstVar e secondvar anche se si dispone di foo_id definito

Speranza che aiuta! =)

+1

Avevo default_scope: includes => [: model1,: model2] definito .. invece ho usato un ambito personalizzato con tutte le necessità include. –

+0

Nel mio caso il problema era che l'oggetto era stato memorizzato nella cache e utilizzava ancora la vecchia versione che non aveva il nuovo attributo. Una volta che la cache è stata cancellata, le cose hanno funzionato come previsto. –

2

stai chiamando

Bar.foo_id 

o

bar = Bar.new 
bar.foo_id 

A meno che non si dispone di una variabile di classe per Bar, è necessario guardare al foo_id su un'istanza di Bar. Spero che aiuti. Saluti.