У меня есть таблица соединений с тремя столбцами. Я попытался определить три модели с обоими, имеет много сквозных и habtm. Я использую активную платформу только для функциональности CRUD, тогда она будет прекращена. У меня такое ощущение, что если я хочу таблицу соединения из трех столбцов, мне придется рано свернуть активный каркас и написать собственный помощник.
(Мой муж имеет многолетний опыт работы с SQL, и он согласен с тем, что таблица соединения из 3 столбцов является правильным подходом. У него нет опыта работы с рельсами.)
Мои три модели: Сотрудник, Проект, Роль, где Роль - это роль сотрудников в проекте. Моя таблица сотрудников_проекты_роль
Что такое СУХОЙ и иным образом эффективный способ сделать это на рельсах? Если есть способ.
У меня не намного больше, чем закомментированные habtm и hmt в моделях и операторы active scaffold в контроллерах.
[Изменить]
Забавная ошибка: | Получено с использованием метода hmt во всех трех основных моделях, а также модели EmployeeProjectRole:
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.klass
Extracted source (around line #5):
2: <tr>
3: <%
4: active_scaffold_config_for(@record.class).subform.columns.each :for => @record, :flatten => true do |column|
5: next unless in_subform?(column, parent_record) and column_renders_as(column) != :hidden
6: -%>
7: <th<%= ' class="required"' if column.required? %>><label><%= column.label %></label></th>
8: <% end -%>
[Редактировать 2]
Нашел статью о троичных ассоциациях (дальнейший поиск в Google с использованием этого термина ничего больше не придумал). В основных моделях я закомментировал первую строку, которая следует за статьей:
# has_many :employees_projects_roles
has_many :roles, :through => :employees_projects_roles
has_many :projects, :through => :employees_projects_roles
И я получил эту ошибку:
ActiveRecord::HasManyThroughAssociationNotFoundError in EmployeesController#index
Could not find the association :employees_projects_roles in model Employee
, которая кажется не ошибкой active_scaffold, а ошибкой ActiveRecord. Кажется, это подразумевает, что has_many :employees_projects_roles
должно быть там, несмотря на то, что предлагает статья. Изменение API с 2008 года возможно?