具有既是主键又是外键的字段的 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
我的数据库设计有两个实体:员工和经理。 经理 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