Ruby on rails 如何在RoR中将不同类型的几个元素相互链接?

Ruby on rails 如何在RoR中将不同类型的几个元素相互链接?,ruby-on-rails,has-many-through,composite-key,Ruby On Rails,Has Many Through,Composite Key,我有一些事件、文档和调查,它们都需要能够相互链接,我计划创建一个包含四列的链接表,如下所示: link_elements{ element1_type CHAR(1) element1_id INTEGER element2_type CHAR(1) element2_id INTEGER } 问题是,我不知道如何在RoR中创建模型,以便使用element type字段来标识相应元素id所属的表(文档、事件或调查)。我对Ruby非常陌生,任何帮助都将不胜感激。我想你只是在寻找有

我有一些事件、文档和调查,它们都需要能够相互链接,我计划创建一个包含四列的链接表,如下所示:

link_elements{
  element1_type CHAR(1)
  element1_id INTEGER
  element2_type CHAR(1)
  element2_id INTEGER
}

问题是,我不知道如何在RoR中创建模型,以便使用element type字段来标识相应元素id所属的表(文档、事件或调查)。我对Ruby非常陌生,任何帮助都将不胜感激。

我想你只是在寻找有许多和
属于
关联的

如果您有事件模型、文档模型和调查模型,则可以在模型文件夹中各自的.rb文件中指定它们是否具有或属于其他模型

例:您希望调查属于文档。在Survey.rb中,添加
所属的行\u to:document
。在Document.rb中,添加行
has\u many:surveys

现在,如果在Surveys表中添加一个新的“document_id”列,它将查找与该列中的id整数对应的文档对象


有关更多信息,请查看。

这三个模型是如何链接的?有用户模型吗?你能解释一下它们是如何相互联系的吗?例如:事件可以包含文档和调查,或者文档可以包含事件和调查等。从您的描述中,无法识别您的需求。我需要能够将任何类型的元素(文档、事件或调查)链接到许多其他类型的元素。因此,一个文档可能链接到两个事件和三个调查,而一个调查可能链接到两个事件和四个文档,一个事件可能链接到两个文档和12个调查理论上,这会将id为12的文档与id为24的调查以及id为12的事件链接在一起。我的猜测是,我需要使用has_many:through:relationship,但我不知道如何创建模型来使用表中的第一列和第三列来区分类型。我认为我需要的是多态关联,如本网站第2.9节所述,问题是我可以在一个条目中包含两组多态数据吗?文档存储在一个表中,调查存储在一个表中,事件存储在另一个表中。简单地向这些表中添加一列只允许我将每个元素链接到每种类型的另一个元素。我需要弄清楚如何创建一个表,让我将这些元素链接在一起,就像我在问题的原始帖子中提到的那样,让Ruby读取第一列作为表标识符,第二列作为行标识符。啊,好的。然后你需要一个有很多关系的人。此关联查找一个包含两个关联对象ID的联接表。我个人没有使用过它,所以我不能给你详细的信息,但是请看这里()并向下滚动到多对多部分。您可以在此处看到联接表的外观()。我猜您将需要3个单独的联接表:DocumentSurvey、DocumentEvent和EventSurvey。