Sak*_*hta 3 elixir ecto phoenix-framework
我有以下架构.
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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有两个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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您需要为关系使用不同的名称:
belongs_to :user_to, FPL.Club, foreign_key: :user_to_id
belongs_to :user_from, FPL.Club, foreign_key: :user_from_id
Run Code Online (Sandbox Code Playgroud)
此处指定的名称是结构中的字段,其中Ecto将加载引用的记录,该记录必须是唯一的.