在多态模式中加入关联

Joining associations in polymorphic schemas

我现在面临的问题是处理多态模式中的关联。

假设我有这样一个问题要解决:

我认为它应该工作的方式是,一旦创建了组织,就会启动数据库上的触发器,并为该组织创建用户和事件 table。用户和事件 table 是用某种逻辑生成的名称创建的,因此它们很容易引用。从 Elixir 的角度来看,有一种用于事件的多态模式,一种用于用户。

在查询中引用用户和事件 table,至于单独的实体,非常简单,看起来或多或少如下所示。

(from user in {table_name, User}, as: :user)
...
(from event in {table_name, Event}, as: :event)

用户模式本身是一个多态模式,事件模式也是。通常,没有多态的 tables,连接会很简单。 我的问题是,是否可以在多态用户模式中引用具有 has_many 关联的多态事件模式?它是“开箱即用”处理的吗,它只需要引用事件模式,例如:has_many :events, Event, on_delete: :delete_all 我可以在查询中使用联接而不会遇到任何问题?

如果有人能向我解释它是如何处理的,我将不胜感激:)

{"users_1", User}|> join(:left, [u], e in {"events_1", Event}) |> preload([u, e], events: e) |> Repo.all

您可以用元组 ({table_name, schema_atom})

替换架构原子(例如用户)