2012-06-04 10 views
5

Mi código:método Definido en una asociación belongs_to

class User < ActiveRecord::Base 
    belongs_to :university 
end 

class University < ActiveRecord::Base 
    has_many :users, dependent: :destroy 
end 

y mi modelo de usuario tiene un atributo university_id.

Si hago University.find(1).users puedo obtener la lista de usuarios, pero si lo hago User.find(1).university (y he comprobado que no es nula university_id aquí) me sale:

NoMethodError: undefined method `university' for #<User:0x00000003859fc8> 
from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/activemodel-3.0.10/lib/active_model/attribute_methods.rb :392:in `method_missing' 
from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.10/lib/active_record/attribute_methods. rb:46:in `method_missing' 
from (irb):14 
from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in`start' 
from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in start' 
from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in 
`<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

¿Qué estoy haciendo mal? Tengo otros modelos y están funcionando bien. ¿Alguna sugerencia? no está siendo reconocida universidad en el modelo de usuario: Gracias de antemano

+1

Eso es raro, lo que ocurre cuando se escribe ** ** User.new.university? –

+0

Acabo de obtener "nil" – marimaf

+0

¿Existe una columna en la base de datos? Por lo general, esta es la causa de este error. – Eraden

Respuesta

6

Todavía no puedo comentar lo que voy a quemar una respuesta:

De alguna manera el belongs_to. Al realizar la prueba, ¿está seguro de que el modelo de Usuario se ha guardado y está en el lugar correcto y que el servidor o la consola se han actualizado? Más comúnmente, en mi experiencia, cuando me estoy entrometiendo con modelos, tengo que actualizar mi servidor y consola a menudo para obtener resultados limpios.

+0

En ese sentido, ¿hay otras clases de usuarios en una gema o biblioteca que estás usando? ¿Tu clase de usuario está en la ubicación correcta del archivo (/app/models/user.rb)? Parece una carga- problema de orden o problema de inclusión de archivos: su código está bien de acuerdo con lo que ha publicado. –

+1

Ocurre que Lambda Red tenía razón. ¡Hoy estaba empezando a trabajar de nuevo y el problema fue resuelto! Supongo que un reinicio de la consola (o servidor) hizo el truco. Me siento estúpido ahora jaja. Simplemente no puedo entenderlo, por qué un "lado" estaba funcionando y el otro no ... de todos modos ... está funcionando ahora. ¡Gracias! – marimaf

+1

¡Perfecto! '¡recargar!' después de cada cambio de modelo es una buena costumbre hacer –

1

Trate

User.where("id =?", 1).first.university 
+0

Gracias, ya marcado como solucionado hace aproximadamente un año. – marimaf

Cuestiones relacionadas