Rails - много ассоциаций в одном представлении - PullRequest
1 голос
/ 19 июня 2011

Благодаря пользователям stackoverflow, stackoverflow помог мне много для моего проекта до сих пор. Теперь я сталкиваюсь с новой проблемой.

Я уже реализовал этот проект http://img7.imagebanana.com/img/cnb46ti2/relationships.png (см. Rails - представление данных из has_many и Has_many_and_belongs_to_many ). Для соединения позиций и навыков я установил отношение has_and_belongs_to_many, потому что каждая позиция имеет много навыков, и у каждого навыка есть много позиций, и для этой таблицы я не хотел добавлять несколько столбцов. Таблица 'позиции_скурения' объединяет оба.

Теперь я хочу добавить 2 новые таблицы.

  1. текущая квалификация http://img7.imagebanana.com/img/bimfgvut/UebersichtQualifikationenbistqualifi.png
  2. ожидаемая_квалификация http://img7.imagebanana.com/img/72p0yj27/UebersichtQualifikationencsollqualif.png

если неясно, что делают эти таблицы со звездами квалификации: каждый навык в позиции имеет свой собственный уровень квалификации (например, для позиции 1, вы должны быть компетентны в навыке 1 много (5 звезд), но для Позиция 2, вам не нужно много знаний об этом умении (2 звезды)). -> Ожидаемая_квалификация. И каждый сотрудник отличается хорошим в каждом навыке -> current_qualification

Вопрос 1: Таблица «Ожидаемая_квалификация» похожа на таблицу «Положение_Скиллы». Правильно ли я понимаю, что если я добавляю таблицу «Ожидаемая_квалификация», то «Позиция_скилл» больше не требуется? Я просто использовал 'position_skills' для соединения этого отношения n: m для просмотра навыков сотрудника на show.html.erb, но это также возможно с ассоциациями 'has_many: through', если я правильно понял.

Вопрос 2: Обе таблицы необходимы для просмотра этих маленьких звездочек в представлении сотрудника show.html.erb. (как вы можете видеть на моих фотографиях. Но сейчас я удовлетворен числами вместо звездочек => 4 звездочки = 4 в виде целого числа в столбце). Что я сделал?

  1. Я создал таблицу 'current_qualification' с rails generate scaffold current_qualification employee_id:integer skill_id:integer qualificationstars:integer

  2. Я добавил код в модели для has_many: через ассоциацию

  3. Я заполнил таблицу для current_qualification

  4. и теперь сложная часть: Контролер сотрудников! Поскольку у меня уже есть ассоциация has_and_belongs_to_many, контроллер выглядит следующим образом: def show @employee = Employee.find(params[:id], :include => { :position => :skills }) end .... Как добавить :include => { :employee => { :current_qualifications => :skills} } для отношения has_many: through теперь в уже существующий код? И какой код позволяет мне выводить столбец qualificationstars из таблицы current_qualification для show.html.erb сотрудника?

Заранее спасибо! И извините за столько вопросов.

...