微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在多态模式中加入关联

如何解决在多态模式中加入关联

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

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

  • 我有多个组织。
  • 每个组织都必须有自己的用户表。
  • 每个组织都必须有自己的事件表。
  • 用户有很多事件 // 事件属于用户

我认为它应该工作的方式是,一旦创建了组织,就会启动数据库上的触发器,并为该组织创建用户和事件表。用户和事件表是用某种逻辑生成名称创建的,因此它们很容易引用。从 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}) 替换架构原子(例如用户)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。