我有一个ChunkRelationship
模型,其表格如下所示:
+----+---------------+----------------+---------------------+---------------------+
| id | chunk_id | chunk_partner | created_at | updated_at |
+----+---------------+----------------+---------------------+---------------------+
| 1 | 1 | 2 | 2010-02-14 12:11:22 | 2010-02-14 12:11:22 |
| 2 | 2 | 1 | 2010-02-14 12:11:22 | 2010-02-14 12:11:22 |
+----+---------------+----------------+---------------------+---------------------+
这两个条目都是Chunk
模型的外键。现在,这种关系被保存两次,两次都是两次(2 => 1和1 => 2)。但是关系可以保存一次,因为如果知道一个ID,那么可以找到另一个ID(这种类型的表叫做什么?)。
我想知道Rails的做法是什么。我正在考虑在before_validation
模型上创建ChunkRelationship
回调,并将两者中的最小数量保存在chunk_id列中,这样可以在保存之前更轻松地检查重复项。但是从那里我不知道如何找回它们。
预期的最终结果是chunk.partners
返回与其配对的所有行,无论哪一列都在哪一列。
答案 0 :(得分:1)
也许您正在寻找has_many_and_belongs_to
关联:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association
这应该创建一个多对多关系,我相信你正在描述。