Ruby on rails 带活动脚手架的三柱连接轨道

Ruby on rails 带活动脚手架的三柱连接轨道,ruby-on-rails,Ruby On Rails,我有一个包含三列的联接表。我尝试用has-many-through和habtm来定义这三个模型。我使用活动脚手架只是为了CRUD功能,然后它将被淘汰。我有一种感觉,如果我想要一个三列联接表,我将不得不尽早淘汰活动的scaffold,并编写一个定制的助手 (我丈夫在SQL方面有多年的经验,他同意3列联接表是正确的方法。他对rails没有任何经验。) 我的三个模型是:员工、项目、角色,其中角色是项目中的员工角色。我的表格是员工\项目\角色 在rails中,干的、高效的方法是什么?如果有办法的话 除了

我有一个包含三列的联接表。我尝试用has-many-through和habtm来定义这三个模型。我使用活动脚手架只是为了CRUD功能,然后它将被淘汰。我有一种感觉,如果我想要一个三列联接表,我将不得不尽早淘汰活动的scaffold,并编写一个定制的助手

(我丈夫在SQL方面有多年的经验,他同意3列联接表是正确的方法。他对rails没有任何经验。)

我的三个模型是:员工、项目、角色,其中角色是项目中的员工角色。我的表格是员工\项目\角色

在rails中,干的、高效的方法是什么?如果有办法的话

除了模型中注释掉的habtm和hmt以及控制器中的activescaffold语句之外,我没有更多的内容

[编辑] 有趣的错误:|在所有三个主要模型以及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): 我收到了这个错误:

ActiveRecord::HasManyThroughAssociationNotFoundError in EmployeesController#index
Could not find the association :employees_projects_roles in model Employee

这似乎不是一个active_scaffold错误,而是一个ActiveRecord错误。这似乎意味着无论文章如何建议,
都有很多:员工、项目和角色。API可能会从2008年起发生变化?

您可以为员工、项目和角色创建一个模型,然后指定两个变量:通过关联:

  has_many :roles, :through => :employees_projects_role, :source => :employees_projects_roles
  has_many :projects, :through => :employees_projects_role, :source => :employees_projects_roles

有一个插件充当一个包含3列的表(实际上是6列,因为每个对象都是由类型和id定义的)

你可能想调查一下以供参考。它有:

  • 罪魁祸首(导致活动的对象,通常是用户)
  • 引用项(记录活动的对象)
  • 活动日志(使罪犯引用引用项的对象)

简单示例:用户(罪魁祸首)为餐厅(参考项目)创建一个评论(活动日志)。

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

在您的特殊情况下,您可以考虑使用插件,以良好的方式处理角色的复杂性。这方面的良好经验:


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

我发布了一个相关问题。答案涉及在模型中声明关联时使用
:join_table

错误消息“nil object”我参与了这个对象没有被实例化。有时,当表中没有数据时,似乎会出现消息

最后一条错误消息,我没有答案


谢谢你的回复。问我是否想悬赏也是如此,但我认为这是你刚刚遇到的问题之一,在解决其他问题时,它就消失了。有时候,继续前进比找出原因更实际。

好建议!Active_scaffold希望EmployeeProjectRole模型在使用hmt方法时具有控制器。我会研究这两个链接。Acl9是你发现的一颗伟大的宝石!谢谢,我将在网站的另一部分进一步研究它。但是,在本例中,角色是项目中的雇员角色,而不是用户角色和权限。谢谢你!这个宝石看起来很棒!我似乎无法通过谷歌找到它。在AgileWebDevelopment上找到了它的参考资料,但该链接指向了他的网站,该网站没有关于该插件的任何信息。
ActiveRecord::HasManyThroughAssociationNotFoundError in EmployeesController#index
Could not find the association :employees_projects_roles in model Employee
  has_many :roles, :through => :employees_projects_role, :source => :employees_projects_roles
  has_many :projects, :through => :employees_projects_role, :source => :employees_projects_roles