2014-09-06 53 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