使用Rails 3.2。我有下表,其中abc_id
应该被引用到xyz_id
。 (注意:我无法控制更改大陆表。)
# shop table
id: 1 # primary
abc_id: 345
# continent table
xyz_id: 1 # primary
desc: "lalala"
xyz_id: 345 # primary
desc: "lorem"
我的协会:
# shop.rb
has_one :continent, foreign_key: 'xyz_id'
# continent.rb
self.primary_key = "xyz_id"
belongs_to :shop, foreign_key: 'abc_id'
但是当我运行以下内容时,我明白了:
@shop = Shop.find(1)
@shop.continent
# >> SELECT `continent`.* FROM `continent` WHERE `continent`.`xyz_id` = 1 LIMIT 1
为什么continent
。xyz_id
不是345
?我做错了什么?
答案 0 :(得分:1)
通过在primary_key
中指定shop.rb
来修复:
has_one :continent, foreign_key: 'xyz_id', primary_key: 'abc_id'
答案 1 :(得分:0)
foreign_key
(和primary key
)在关联的两边应始终相同。
在您的情况下,shop.rb
中的关联应该是:
has_one :continent, foreign_key: 'abc_id'