I have a join table with three columns. I've tried defining the three models with both a has many through and habtm. I am using active scaffold just for CRUD functionality then it will get phased out. I have a feeling that if I want a three column join table, I'm going to have to phase out active scaffold early and write a custom helper.
(My husband has years of experience with SQL, and he agrees that a 3 column join table is the correct approach. He doesn't have any experience with rails.)
My three models are: Employee, Project, Role where Role is the employees role in the project. My table is employees_projects_roles
What is the DRY and otherwise efficient way of doing this in rails? If there is a way.
I've been searching for days, and haven't found my answer. Thanks in advanced for your help, and let me know if you need to see any particulars. I don't have much more than the commented out habtm and the hmt in the models and the active scaffold statement in the controllers.
[Edit] Fun Error :| Received using the hmt method in all three main models as well as the EmployeeProjectRole model:
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 -%>
[Edit 2] Found this article on ternary associations (further searching on Google using this term came up with nothing else). In the main models I commented out the first line to follow the article:
# has_many :employees_projects_roles
has_many :roles, :through => :employees_projects_roles
has_many :projects, :through => :employees_projects_roles
And I received this error:
ActiveRecord::HasManyThroughAssociationNotFoundError in EmployeesController#index
Could not find the association :employees_projects_roles in model Employee
which doesn't seem to be an active_scaffold error, but an ActiveRecord error. This seems to imply that has_many :employees_projects_roles
needs to be there, despite what the article suggests. API change from 2008 maybe?