使用`cast_assoc`关联不同模式的记录

时间:2019-05-28 20:43:34

标签: postgresql elixir phoenix-framework ecto

我正在尝试使用cast_assoc来关联存在于不同模式的记录。

在下面的代码中,Organization存在于租户架构中(例如“ tenant_2837.organizations”),而Workspace存在于公共架构中(例如“ public.workspaces”)。

代码运行时,Ecto尝试在租户模式下创建Workspace

%Organization{}
|> Organization.create_organization_changeset(attrs)
|> cast_assoc(:workspace, with: &Workspace.changeset/2)
|> Repo.insert(prefix: TenantActions.build_prefix(tenant))

是否有一种方法可以强制它在指定为@schema_prefix模块属性的架构下创建它?即

defmodule MyApp.Workspaces.Workspace do
  use Ecto.Schema

  @schema_prefix "public"

  schema "workspaces" do
    field :subdomain, :string
    field :name, :string
    belongs_to :organization, Organizations.Organization

    timestamps(type: :utc_datetime_usec)
  end
end

0 个答案:

没有答案