Благодаря пользователям stackoverflow, stackoverflow до сих пор очень помогал мне в моем проекте. Теперь я столкнулся с новой проблемой.
Я уже реализовал этот проект http://img7.imagebanana.com/img/cnb46ti2/relationships.png (см. Rails — просмотр данных из has_many и Has_many_and_belongs_to_many). Для соединения должностей и навыков я создал отношение has_and_belongs_to_many, потому что у каждой должности есть много навыков, а у каждого навыка много должностей, и для этой таблицы я не хотел добавлять несколько столбцов. Таблица «positions_skills» объединяет оба.
Теперь я хочу добавить 2 новые таблицы.
- current_qualification http://img7.imagebanana.com/img/bimfgvut/UebersichtQualifikationenbistqualifi.png
- ожидаемая_квалификация http://img7.imagebanana.com/img/72p0yj27/UebersichtQualifikationencsollqualif.png
если непонятно, что делают эти таблицы с квалификационными звездами: Каждый навык в должности имеет свой уровень квалификации (например, для позиции 1 нужно быть компетентным в навыке 1 много (5 звезд), а для позиции 2, вам нужно не так много знаний об этом навыке (2 звезды)). -> ожидаемая_квалификация. И каждый сотрудник хорош в каждом навыке -> текущая_квалификация
Вопрос 1. Таблица "ожидаемая_квалификация" похожа на таблицу "positions_skills". Я прав, что если я добавлю таблицу «ожидаемая_квалификация», то «position_skills» больше не понадобится? Я просто использовал position_skills для подключения этого отношения n:m для просмотра навыков сотрудника на show.html.erb, но это также возможно с ассоциациями has_many:through, если я правильно понял.
Вопрос 2: Обе таблицы необходимы для просмотра этих звездочек в представлении сотрудника show.html.erb. (как вы можете видеть на моих картинках. Но сейчас меня устраивают числа вместо Звезд => 4 звезды = 4 как целое число в столбце). Что я сделал?
Я создал таблицу 'current_qualification' с помощью
rails generate scaffold current_qualification employee_id:integer skill_id:integer qualificationstars:integer
Я добавил код в модели для ассоциации has_many :through
Я заполнил таблицу для current_qualification
а теперь самое сложное: контроллер сотрудников! Поскольку у меня уже есть ассоциация has_and_belongs_to_many, контроллер выглядит так:
def show @employee = Employee.find(params[:id], :include => { :position => :skills }) end ...
. Как теперь добавить:include => { :employee => { :current_qualifications => :skills} }
для отношения has_many :through в уже существующий код? И какой код позволяет мне вывести столбец квалификации из таблицы current_qualification для show.html.erb сотрудника?
Заранее спасибо! И извините за столько вопросов.