具有既是主键又是外键的字段的 Echo Schema

Echo Schema with field that is both a primary key and a foreign key

我的数据库设计有两个实体:员工和经理。 经理 ISA 员工。

这就是我定义员工和经理的方式table:

create table(:employees) do
end

create table(:managers, primary_key: false) do
        add :id, references(:employees, on_delete: :delete_all), primary_key: true
end

我不确定 MyApp.Manager 模块应该如何运行。如果 id 列只是一个自定义主键,那么它应该是:

@primary_key {:id, :integer, []}
schema "managers" do
end

但是我应该如何指示:id既是员工的主键又是外键table?

belongs_to 宏有几个选项,其中一些可以帮助您:

  • foreign_key: :id允许指定外键名,
  • 您还可以使用 define_field: false 选项,该选项将使用现有架构字段作为外键并跳过自行生成一个。

最终的 schema 声明可以如下所示:

@primary_key {:id, :integer, []}
schema "managers" do
  belongs_to :employee, Employee, define_field: false, foreign_key: :id
end