问题描述
我现在面临的问题是处理多态模式中的关联。
我认为它应该工作的方式是,一旦创建了组织,就会启动数据库上的触发器,并为该组织创建用户和事件表。用户和事件表是用某种逻辑生成的名称创建的,因此它们很容易引用。从 Elixir 的角度来看,有一种用于事件的多态模式,另一种用于用户。
在查询中引用用户和事件表,对于单独的实体,非常容易,看起来或多或少如下所示。
(from user in {table_name,User},as: :user)
...
(from event in {table_name,Event},as: :event)
用户模式本身是一个多态模式,事件模式也是。通常,如果没有多态表,连接会很简单。
对我来说,问题是是否可以在多态 User 架构中引用具有 has_many
关联的多态 Event 架构?它是否“开箱即用”处理,它只需要引用事件架构,例如: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}) 替换架构原子(例如用户)