Использование `cast_assoc` для связывания записей в разных схемах - PullRequest
0 голосов
/ 28 мая 2019

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