2012-06-04 20 views
5

Kodum:Tanımsız yöntemi

class User < ActiveRecord::Base 
    belongs_to :university 
end 

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

ve benim modeli Kullanıcı bir university_id niteliği vardır. Ben University.find(1).users yaparsanız

Ben kullanıcıların listesini almak ama User.find(1).university yapmak (ve burada nil university_id olmadığını kontrol) eğer olsun: Neyi yanlış yapıyorum

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

? Başka modellerim var ve gayet iyi çalışıyorlar. Baska öneri? Her nasılsa belongs_to

: Hala bu yüzden bir cevap yakacağız yorum yapamam peşin

+1

deneyin? –

+0

Sadece "nil" aldım – marimaf

+0

Veritabanındaki sütun var mı? Genellikle bu hatanın nedeni budur. – Eraden

cevap

6

teşekkürler Kullanıcı modelinde üniversite kabul edilmesi değildir. Test ederken, Kullanıcı modelinin kaydedildiğinden ve doğru yerde olduğundan ve sunucu veya konsolun yenilenmiş olduğundan emin misiniz? En yaygın olarak, deneyimlerime göre, modellerle uğraşırken, temiz sonuçları almak için sunucumu ve konsolu sık sık yenilemem gerekiyor.

+0

Bu satırlar boyunca, kullanmakta olduğunuz bir gem veya kitaplık içinde başka Kullanıcı sınıfları var mı? Kullanıcı sınıfınız doğru dosya konumunda mı (/app/models/user.rb)? Bir yük gibi görünüyor - sipariş sorunu veya dosya içerme sorunu bana - kodunuz gönderdiğinizden çok iyi. –

+1

Yani Lambda Red'in haklı olduğu oluyor. Bugün tekrar çalışmaya başlamıştım ve sorun çözüldü! Sanırım konsolun (veya sunucunun) yeniden başlatılması hile yaptı. Kendimi aptal hissediyorum haha. Sadece aklımdan bir şey alamıyorum, neden bir "taraf" çalışıyordu ve diğeri de ... neyse ... şimdi çalışıyor. Teşekkürler! – marimaf

+1

Mükemmel! her model değişiminden sonra –

1

** yazarken neler ** User.new.university olur, garip

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

yapmak için iyi bir alışkanlıktır! Teşekkürler, bir yıl kadar önce çözüldüğü için zaten işaretlendi. – marimaf