我的数据库设计有两个实体:Employee和Manager。 经理ISA员工。
这是我定义员工和经理表的方式:
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既是主键又是employee表的外键?
答案 0 :(得分:7)
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