我有以下架构。
defmodule Message do
use Ecto.Schema
schema "messages" do
belongs_to :user, FPL.Club, foreign_key: :user_to_id
belongs_to :user, FPL.Club, foreign_key: :user_from_id
end
end
正如您所看到的,我有两个belongs_to
关系,我想在这里定义,对应于发送邮件的用户,以及发送此邮件的用户。在消息表中,我有两个名为user_to_id
和user_from_id
的字段。
但是这失败并出现以下错误:
== Compilation error on file lib/message.ex ==
** (ArgumentError) field/association :user is already set on schema
lib/ecto/schema.ex:1697: Ecto.Schema.put_struct_field/3
lib/ecto/schema.ex:1677: Ecto.Schema.association/5
lib/ecto/schema.ex:1512: Ecto.Schema.__belongs_to__/4
lib/message.ex:12: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
我做错了什么?
答案 0 :(得分:5)
您需要为关系使用不同的名称:
<li>
<span>Second Level</span>
<ul>
<li><span>Third Level</span></li>
<li><span>Third Level</span></li>
</ul>
</li>
此处指定的名称是结构中的字段,其中Ecto将加载引用的记录,该记录必须是唯一的。