簡體   English   中英

Elixir Ecto:模式中的多個belongs_to關系

[英]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_iduser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM