从2列连接表中以两种方式从Rails中检索数据

时间:2014-02-26 20:13:25

标签: ruby-on-rails ruby-on-rails-4

我有一个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返回与其配对的所有行,无论哪一列都在哪一列。

1 个答案:

答案 0 :(得分:1)

也许您正在寻找has_many_and_belongs_to关联:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

这应该创建一个多对多关系,我相信你正在描述。