Я пытаюсь использовать 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