使用 Elixir Ecto,如何在迁移中添加 has_many 关系?
With Elixir Ecto, how do I add a has_many relationship in a migration?
我想写这样的东西:
defmodule JobHunt.Repo.Migrations.CompaniesHaveManyJobs do
use Ecto.Migration
def change do
alter table (:companies) do
add :jobs, :has_many, Job
end
end
end
运行 mix ecto.migrate
此迁移会出错,那么正确的方法是什么?
您应该将所需的外键添加到作业 table:
defmodule JobHunt.Repo.Migrations.CompaniesHaveManyJobs do
use Ecto.Migration
def change do
alter table(:jobs) do
add :company_id, :integer
end
end
end
我们可以按照文档的建议使用这种方式:
alter table(:jobs) do
add :company_id, references(:companies)
end
我不确定这里是否需要复数形式:references(:companies)
但它不适用于 phermacy
(单数)
我想写这样的东西:
defmodule JobHunt.Repo.Migrations.CompaniesHaveManyJobs do
use Ecto.Migration
def change do
alter table (:companies) do
add :jobs, :has_many, Job
end
end
end
运行 mix ecto.migrate
此迁移会出错,那么正确的方法是什么?
您应该将所需的外键添加到作业 table:
defmodule JobHunt.Repo.Migrations.CompaniesHaveManyJobs do
use Ecto.Migration
def change do
alter table(:jobs) do
add :company_id, :integer
end
end
end
我们可以按照文档的建议使用这种方式:
alter table(:jobs) do
add :company_id, references(:companies)
end
我不确定这里是否需要复数形式:references(:companies)
但它不适用于 phermacy
(单数)