I have the following 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
As you can see, I have two belongs_to
relationships I'd like to define here, corresponding to user who sent the message, and the user to whom this message is sent. In the message table, I have two fields named user_to_id
and user_from_id
.
But this fails with the following error:
== 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
What am I doing wrong?
You need to use different names for the relationships:
belongs_to :user_to, FPL.Club, foreign_key: :user_to_id
belongs_to :user_from, FPL.Club, foreign_key: :user_from_id
The name specified here is the field in the struct where Ecto will load the referenced record, which needs to be unique.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With