rails具有多重性的关联

时间:2013-04-12 18:52:35

标签: ruby-on-rails associations multiplicity

问题是:如何在Ruby on Rails关联中表示多重性? 假设我有两个模型 - 集合项目。他们处于 has_and_belongs_to_many 关系中。如果一个集合包含多个相同的项目实例(例如,它包含10个相同的项目),我该怎么做?

我尝试使用 has_many:通过,但似乎不是很好的做法。

1 个答案:

答案 0 :(得分:0)

首先,我想澄清一下,你真的想要一个多对多的关系,而不仅仅是一对多的重复数据库记录来代表多重性。因为您可以,如果可以的话,只需根据需要多次复制items条记录,并将collection_id外键指向相应的Collection记录。

如果这不是您想要的,并且您确实想要多重性,那么我不会使用ActiveRecord关联来执行此操作。我只是在item_ids对象中存储Collection的数组或列表,并将此数组序列化/反序列化为数据库中的字符串或文本字段,以便:

collection.item_ids
=> [2, 3, 1, 1, 2, 1, 2, 2, 2, 2, 5, 6, 2, 3, 2]

item_ids属性中的每个条目都是items表的外键。

如果您碰巧使用Postgres作为您的数据库,我认为您实际上可以将列表/数组存储为Postgres array column,但我自己从未真正尝试过在Rails中执行此操作。