2014-09-06 24 views
0

我試圖讓聯結表工作。 我有三種模式:專業,技能和交叉參考表專業技能。Rails聯結表名稱錯誤

的專業模型

class Professional < ActiveRecord::Base 
    has_many :professionals_skills 
    has_many :skills, :through => :professionals_skills 
end 

的技能模型

class Skill < ActiveRecord::Base 
    has_many :professionals_skills 
    has_many :professionals, :through => :professionals_skills 
end 

的交叉引用表

class ProfessionalsSkills < ActiveRecord::Base 
    belongs_to :professional 
    belongs_to :skill 
end 

在Rails控制檯

irb(main):005:0* @x = Professional.find(1) 
    Professional Load (0.1ms) SELECT "professionals".* FROM "professionals" WHERE "professionals"."id" = ? LIMIT 1 [["id", 1]] 
=> #<Professional id: 1, gender: 1, first_name: "Goofy", last_name: "Muff", date_of_birth: "1985-07-20 00:00:00", email_address: "[email protected]", city_id: 1, created_at: "2014-09-06 13:04:57", updated_at: "2014-09-06 13:04:57"> 
irb(main):006:0> 

,但...當我嘗試:

@x.skills 

NameError: uninitialized constant Professional::ProfessionalsSkill 
    from /Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.5/lib/active_record/inheritance.rb:133:in `compute_type' 
    from /Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.5/lib/active_record/reflection.rb:221:in `klass'... 

我在做什麼錯?我使用Rails 4.1.4

回答

2

的事情是模型應該是單數形式,如果你在錯誤仔細看它說

NameError: uninitialized constant Professional::ProfessionalsSkill 

通知ProfessionalsSkillProfessionalsSkills

您需要重命名模型爲單數形式,還有表格,以匹配軌道約定。

+0

太棒了!謝謝! – MiningSam 2014-09-06 14:42:28