我在试着让接线桌正常工作。我有三种模式:专业,技能和交叉参考表ProfessionalsSkills。
专业模式
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: "example@example.com", 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
发布于 2014-09-06 14:41:33
问题是模型应该是单数形式,如果你仔细观察错误,它说。
NameError: uninitialized constant Professional::ProfessionalsSkill注意ProfessionalsSkill而不是ProfessionalsSkills
您需要将模型重命名为单数形式,也需要重命名表,以匹配rails约定。
https://stackoverflow.com/questions/25701118
复制相似问题