ruby-on-rails - 带事件脚手架的 rails 中的三柱连接

标签 ruby-on-rails

我有一个包含三列的连接表。我尝试用 a has many through 和 habtm 定义这三个模型。我仅将事件脚手架用于 CRUD 功能,然后它将被逐步淘汰。我有一种感觉,如果我想要一个三列连接表,我将不得不提前逐步淘汰事件脚手架并编写一个自定义助手。

(我丈夫有多年的 SQL 经验,他同意 3 列连接表是正确的方法。他没有任何使用 Rails 的经验。)

我的三个模型是:Employee、Project、Role 其中 Role 是项目中的员工角色。我的表是employees_projects_roles

在 Rails 中执行此操作的 DRY 和其他有效方法是什么?如果有办法。

除了模型中注释掉的 habtm 和 hmt 以及 Controller 中的 active 脚手架语句之外,我没有更多的东西。

[编辑]
有趣的错误:|在所有三个主要模型以及 EmployeeProjectRole 模型中使用 hmt 方法接收:

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?

最佳答案

首先,我同意,您似乎需要一个 3 列连接表。我还没有使用 ActiveRecord 完成此操作,我认为您编写自定义模型的方法是通过两个 has_many through 来实现此功能。关系不会是一个坏主意。

在您的特殊情况下,您可以考虑使用一个插件来很好地处理角色的复杂性。不错的体验:acl9

您可以使用这个非常有用的插件将角色分配给单个项目实体上的单个用户,其余部分由它处理。

关于ruby-on-rails - 带事件脚手架的 rails 中的三柱连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413397/

相关文章:

ruby-on-rails - Ruby on Rails使用link_to和image_tag

ruby-on-rails - ActiveRecord 依赖于 Ruby、Rails、Cucumber 和 RSpec

ruby-on-rails - Rails 将验证放在模块混合中?

mysql - 在 Ubuntu 上安装 mysql gem 的困难

mysql - 基于参数的 Rails 自定义查询

ruby-on-rails - 有没有人有使用 Ruby in Steel 的经验?

ruby-on-rails - 如何在页面加载后运行 Twitter gem

ruby-on-rails - 尝试使用 Rails 和 PostgreSQL 生成模型时,命令挂起且没有错误

ruby-on-rails - 延迟发送电子邮件

ruby-on-rails - 无法在 iframe 中显示我的 Rails 4 应用程序,即使 'X-Frame-Options' 是 'ALLOWALL'