我有一个三列连接表。我已经尝试过定义三个模型,并且都有很多直通式和habtm。我正在使用活动脚手架,仅用于CRUD功能,那么它将被逐步淘汰。我有一种感觉,如果我想要一个三列连接表,我将不得不逐步停用活动脚手架并编写一个自定义助手。三列加入活动脚手架轨道
(我的丈夫有多年的经验,SQL,他同意3列连接表是正确的做法,他没有与任何导轨经验。)
我的三个车型分别是:员工,项目,角色其中角色是项目中的员工角色。我的表是员工_项目_角色
什么是DRY和其他有效的方式在轨道中这样做?如果有办法。
我没有比模型中的habtm和hmt以及控制器中的活动脚手架声明更多的注释。
[编辑] 有趣的错误:使用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] 发现这个article三元协会(使用这个词在谷歌进一步搜索想出了什么其他)。在主力车型我注释掉的第一行遵循相应的文章:
# 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
需要在那里,尽管文章建议。 2008年的API变化可能?
伟大的建议! Active_scaffold期望EmployeeProjectRole模型在使用hmt方法时具有控制器。我会研究这两个环节。 – 2009-09-11 22:02:02