habe ich folgendes Platzmodul:Ecto - Selbstreferenz, has_many durch
schema "accounts_users" do
has_many :friendships, Friendship
has_many :friends, through: [:friendships, :friend]
timestamps()
end
Die Friendship-Modul:
schema "accounts_friendships" do
belongs_to :user, User
belongs_to :friend, User
timestamps()
end
Und die Freundschaft Migration:
def change do
create table(:accounts_friendships) do
add :user_id, references(:accounts_users, on_delete: :nothing)
add :friend_id, references(:accounts_users, on_delete: :nothing)
timestamps()
end
create index(:accounts_friendships, [:user_id])
create index(:accounts_friendships, [:friend_id])
end
ich erstellen kann eine neue Freundschaft zwischen Benutzer 1 und Benutzer 2 wie folgt:
%Friendship{user_id: 1, friend_id: 2} |> Repo.insert()
Das Verhalten funktioniert wie erwartet für Benutzer 1:
Repo.all(Ecto.assoc(user1, :friendships)) # => [%Friendship{...}]
Repo.all(Ecto.assoc(user1, :friends)) # => [%User{...}]
Aber nicht für Benutzer 2:
Repo.all(Ecto.assoc(user2, :friendships)) # => []
Repo.all(Ecto.assoc(user2, :friends)) # => []
Ich verstehe, warum friends
nicht für Benutzer 2 zu finden, aber warum nicht die friendships
? Stimmt etwas nicht mit der Beziehung?