将两个对象链接到rails活动记录中的单个记录

时间:2013-04-29 17:21:07

标签: ruby-on-rails ruby activerecord rails-migrations

我正试图在rails中的同一个类中创建两个一对一的关系。

我在我的班级中添加了两个名为link

的列

post_id1 post_id2

所以现在我希望能够获得一个链接对象,然后执行

link.post1

link.post2

但我对如何指定这个

感到困惑

我认为这与

有关
has_one :Post, => specify name so the references don't clash

我认为这很简单,我只是对铁杆的新手。

3 个答案:

答案 0 :(得分:1)

您需要在链接表中使用post1_id和post2_id,并且:

belongs_to :post1, class_name: "Post"
belongs_to :post2, class_name: "Post"

在Post模型中,您可以使用has_one或has_many进行反向引用。

更新: 以下是对此的参考:choosing between belongs_to and has_one

答案 1 :(得分:1)

另一个回答帮助了我,但也是我特意寻找

:foreign_key => "post_id1"

所以最后一行是

belongs_to :post_1, :class => "Post", :foreign_key => "post_id1"

感谢您的帮助!

答案 2 :(得分:0)

在课程Link中:

belongs_to :post_1, :class => "Post"
belongs_to :post_2, :class => "Post"

编辑:[更正belongs_to]