1

使用 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吗?我做错了什么?

4

2 回答 2

1

通过指定primary_keyin修复shop.rb

has_one :continent, foreign_key: 'xyz_id', primary_key: 'abc_id'
于 2013-11-02T06:19:29.463 回答
0

( foreign_keyand primary key) 在关联的两边应该总是相同的。

在您的情况下,shop.rb关联中应该是:

has_one :continent, foreign_key: 'abc_id'

于 2013-11-02T06:05:29.637 回答