当我阅读https://github.com/elixir-lang/ecto/issues/389及其相关问题时,Ecto 似乎支持多态关联。
假设我需要一个关于任务和事件模型的评论模型关联。如果我对 Ecto 与自定义源关联的理解是正确的,那么我们需要四个表和三个模型,
表
- 任务
- 事件
- 任务评论
- events_comments
模型
- 任务
- 事件
- 评论
任务和事件模型将具有与自定义源的 has_many 关联,如下所示。
defmodule ExampleApp.Task do
use ExampleApp.Web, :model
schema "tasks" do
field :title, :string
field :body, :string
has_many :comments, {"tasks_comments", Comment}
timestamps
end
end
defmodule ExampleApp.Event do
use ExampleApp.Web, :model
schema "events" do
field :title, :string
field :body, :string
has_many :comments, {"events_comments", Comment}
timestamps
end
end
现在我不明白的是 Comment 模型应该是什么样子?
Comment 模型如何处理两个表?以及它如何处理与不同模型的 belongs_to 关联?