Rails关联中的特定foreign_key与预期不符

时间:2013-11-02 05:45:09

标签: ruby-on-rails associations

使用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

为什么continentxyz_id不是345?我做错了什么?

2 个答案:

答案 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'