自定义外键的Rails + Postgres关系问题

时间:2014-07-02 21:31:04

标签: mysql ruby-on-rails postgresql activerecord foreign-key-relationship

我正在从MySQL迁移到Postgres,我遇到了一个我无法解决的问题。我确信有简单的答案,但我被卡住了。

问题

我有一个属于模板模型的步骤模型,但指定了一个名为 template_uuid 的外键以匹配模板表<专栏> uuid 专栏。

这一切都在MySQL上运行良好但现在不适用于Postgres。调用 step.template 将返回相关模板,但现在返回nil

模板表上的uuid列和步骤上的template_uuid列都是UUID数据类型。

示例:

class Step < ActiveRecord::Base
 belongs_to    :template, :foreign_key => :template_uuid

所以,在尝试调用关联时我得到nil

step = Step.last
step.template  => nil

但是,我可以使用template_uuid列查询模板,它可以正常工作

Template.where(:uuid => step.template_uuid).first

那么......我在这里想念的是什么。记录和UUID的排列清楚,为什么这种关系现在因为我使用Postgres而破裂。数据库上没有物理外键,但以前从未重要。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

我之前无法说出原因,但只要您在关联模型上有自定义的primary_key(除了:id),您就必须提供

  belongs_to :template, :primary_key => :uuid, :foreign_key => :template_uuid