[英]Elixir Ecto: Casting multiple belongs_to relationship in a schema goes wrong
[英]Elixir Ecto: Multiple belongs_to relationship in a schema
我有以下架構。
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
我究竟做錯了什么?
您需要為關系使用不同的名稱:
belongs_to :user_to, FPL.Club, foreign_key: :user_to_id
belongs_to :user_from, FPL.Club, foreign_key: :user_from_id
此處指定的名稱是ecto將在其中加載引用記錄的結構中的字段,該字段必須是唯一的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.