我正在尝试使用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