所以,我有一个用户模型:
class User < ActiveRecord::Base
has_one :partner, class_name: "User", foreign_key: :id
belongs_to :inverse_partner, class_name: "User", foreign_key: :id
end
每个用户都有id
(由脚手架准备),partner_id
表格中的inverse_partner_id
和users
列。
但是,当我尝试这样做时:
aka[x].partner = shiro[x]
aka[x]
和shiro[x]
都是User
,我得到这个奇怪的错误,其中SQL语句表明我设置的是id
而不是{{1}我正打算:
partner_id
我显然做错了什么。帮助
答案 0 :(得分:1)
我看到的唯一需要的更改是在您的关联“foreign_key
选项中。
使用当前设置,您基本上使用一个列用于三个不同的目的,即users
表的主键,partner
关联的外键和inverse_partner
关联的外键。因此,当这样做并且您尝试设置伙伴时,可以预期这样的错误。
为每个关系设置适当的外键,如下所示:
class User < ActiveRecord::Base
has_one :partner, class_name: "User", foreign_key: :partner_id
belongs_to :inverse_partner, class_name: "User", foreign_key: :inverse_partner_id
end