2014-09-06 2 views
0

Я пытаюсь получить рабочий стол. У меня есть три модели: Professional, Skill и перекрестная справочная таблица ProfessionalsSkills.Ошибка соединения таблицы переходов 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 

Примечание ProfessionalsSkill не ProfessionalsSkills

Вы должны переименовать модель в единую форму, а также таблицу, чтобы соответствовать правилам рельсов.

+0

Удивительный! Благодаря! – MiningSam

Смежные вопросы