我的数据库设计有两个实体: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
Run Code Online (Sandbox Code Playgroud)
我不确定MyApp.Manager模块应该怎么做.如果id列只是一个自定义主键,那么它应该是:
@primary_key {:id, :integer, []}
schema "managers" do
end
Run Code Online (Sandbox Code Playgroud)
但是我应该如何指出:id既是主键又是employee表的外键?
该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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |