2012-06-04 25 views
5

Mój kod:Niezdefiniowany metoda dla asocjacji belongs_to

class User < ActiveRecord::Base 
    belongs_to :university 
end 

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

i mój model Użytkownik ma atrybut university_id.

Jeśli robię University.find(1).users uzyskać listę użytkowników, ale jeśli to zrobię User.find(1).university (i sprawdziłem, że university_id nie jest zerowa tutaj) uzyskać:

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>' 

Co robię źle? Mam inne modele i działają dobrze. Jakieś sugestie? Dzięki z góry

+1

To dziwne, co się dzieje, gdy wpiszesz ** User.new.university **? –

+0

Po prostu otrzymuję "zero" – marimaf

+0

Kolumna w bazie danych istnieje? Zwykle jest to przyczyną tego błędu. – Eraden

Odpowiedz

6

ja wciąż nie mogę się wypowiedzieć więc będę palić odpowiedź:

jakoś belongs_to: uniwersytet w modelu użytkownika nie jest rozpoznawane. Czy podczas testowania masz pewność, że model użytkownika został zapisany i jest we właściwym miejscu oraz czy serwer lub konsola zostały odświeżone? Najczęściej, z doświadczenia, kiedy wtrącam się w modele, muszę odświeżać mój serwer i konsolę, aby uzyskać czyste wyniki.

+0

Wzdłuż tych linii, czy istnieją inne klasy użytkownika tam w klejnotach lub biblioteki, których używasz? Czy twoja klasa użytkownika w odpowiednim miejscu pliku (/app/models/user.rb)? Wygląda jak obciążenie problem z zamówieniem lub problem z dołączaniem pliku do mnie - Twój kod jest w porządku z tego, co opublikowałeś. –

+1

Tak się składa, że ​​Lambda Red miała rację. Dzisiaj zacząłem znów pracować i problem został rozwiązany! Domyślam się, że ponowne uruchomienie konsoli (lub serwera) zdziałało. Czuję się głupio, haha. Po prostu nie mogę o tym myśleć, dlaczego jedna "strona" działa, a druga nie ... w każdym razie ... teraz działa. Dzięki! – marimaf

+1

Idealny! 'reload!' po każdej zmianie modelu jest dobrym zwyczajem, aby –

1

Spróbuj

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

Dzięki, już oznaczone jako rozwiązany około rok temu. – marimaf

Powiązane problemy