为什么我的可选:true选项在我的Rails模型中不起作用



我正在努力进行以下迁移:

class CreatePartnerActivationHistories < ActiveRecord::Migration[6.1]
def change
create_table :partner_activation_histories do |t|
t.references :partner, null: false, foreign_key: true
t.references :owner, null: false, foreign_key: { to_table: 'admin_users' }
end
end

型号:

class PartnerActivationHistory < ApplicationRecord
belongs_to :partner
belongs_to :owner, class_name: "AdminUser", optional: true
end

当我尝试在没有所有者的情况下创建PartnerActivationHistory记录时,它会引发以下错误:

PG::NotNullViolation: ERROR: null value in column "owner_id" of relation "partner_activation_histories" violates not-null constraint

我不明白为什么我的optional: true不工作。。。

有什么想法吗?谢谢

可选所有者意味着数据库中nil/NULLowner_id,但该列的规范规定它是强制性的,不能是null

从这样的列中删除非null要求,你应该很好:

class CreatePartnerActivationHistories < ActiveRecord::Migration[6.1]
def change
create_table :partner_activation_histories do |t|
t.references :partner, null: false, foreign_key: true
t.references :owner,                foreign_key: { to_table: 'admin_users' }
end
end

您需要回滚当前的迁移,对迁移文件进行更改,然后再次向前迁移。假设您可以丢失所有当前的PartnerActivationHistory记录。如果没有,您将需要进行新的迁移,只需通过删除非null约束来修改这一列。

相关内容

  • 没有找到相关文章

最新更新