我正在从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而破裂。数据库上没有物理外键,但以前从未重要。
有没有人有任何想法?
答案 0 :(得分:0)
我之前无法说出原因,但只要您在关联模型上有自定义的primary_key(除了:id),您就必须提供
belongs_to :template, :primary_key => :uuid, :foreign_key => :template_uuid