2012-08-14 37 views
0

我有3個表格:用戶,大學和校園。 他們的模型如下:Method_missing爲關係模型university.campus

class User < ActiveRecord::Base 
    belongs_to :university 
end 

class Campus < ActiveRecord::Base 
    belongs_to :university 
end 

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

但我正在逐漸從大學校園協會有問題。檢查:

1.9.2p290 :012 > u = University.find(3) 
=> #<University id: 3, name: "myuni", email: "uni.com", created_at: "2012-06-04 03:48:59", updated_at: "2012-06-13 03:22:18"> 
1.9.2p290 :013 > u.users 
=> [#<User id: 21, name: "myname", email: "myemail", password: "asdfgh", created_at: "2012-08-10 23:42:40", updated_at: "2012-08-10 23:42:40", university_id: 3>] 
1.9.2p290 :014 > u.campus 
NoMethodError: undefined method `campus' for #<University:0x000000031c8a10> 
     from /home/mari/.rvm/gems/ruby-1.9.2-p290/gems/activemodel-3.0.10/lib/active_model/attribute_methods.rb:392:in `method_m 
issing' 
     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>' 

這可能是由於校園的多元化,但I haven't been able to fix that either。 所以我試過u.campu,u.campuses,u.campues,但是我得到了同樣的「NoMethodError」。

有什麼建議嗎?由於

+0

大學與校園的關係是'has_many',所以「u.campus」不起作用是有道理的。 'u.campuses'應該可以工作。它確實可能需要對你的複數化問題做些什麼。 – Mischa 2012-08-14 03:27:31

+1

在控制檯上試試這個:'u.methods.grep(/ campu /)',看看你給了什麼。 – 2012-08-14 03:55:26

回答

0

似乎並補充說:

set_table_name 'campus' 

到模型:campus.rb固定它

0

語法將u.campusesu.campuses.first

我會還組織表爲:

class User < ActiveRecord::Base 
    belongs_to :campus 
end 

class Campus < ActiveRecord::Base 
    has_many :users, dependent: :destroy 
    belongs_to :university 
end 

class University < ActiveRecord::Base 
    has_many :campuses, dependent: :destroy 
end 
+0

謝謝,我明白你的觀點,但用戶屬於大學(因爲他們可以參加不同的校園),但我在校園中使用我的數據庫中的其他表格。 – marimaf 2012-08-14 04:12:30