user
が別のuser
...のフォローアップ/フォローを行う方法として、User
自己参照関連を実装しました。私は、以下の各関数の正しいクエリ式を実装する方法について混乱しています。私は各機能のために何をすべきかを理解していますが、それらを実装する方法はわかりません。自己参照関連のEctoクエリ
defmodule App.User do
schema "users" do
#...
has_many :followers, App.Follower, foreign_key: :followed_id
has_many :following, through: [:followers, :follower]
end
#...
@doc """
Return true if `user` is following `user2`
"""
def following?(user, user2) do
end
@doc """
Return true if `user` is followed by `user2`
"""
def followed_by?(user, user2) do
end
@doc """
`user` follows `user2`
"""
def follow(user, user2) do
end
@doc """
`user` unfollows `user2`
"""
def unfollow(user, user2) do
end
end
Follower
スキーマ:
schema "followers" do
belongs_to :followed, User
belongs_to :follower, User
timestamps()
end
'に続いて?'と 'follow_by?'レコードが存在するかどうかを調べるためにジョインテーブルでルックアップを行うだけでいいですか? 'follow'は、idと' unfollow'の両方を使ってJoinテーブルにRepo.insertを実行して、そのようなレコードを削除することができます。それらはそれぞれ1ライナーでなければなりません。 – Johannes
ありがとうございました。私は各機能のために何をすべきかを理解していますが、それらを実装する方法はわかりません。それが意味をなさないならば。 –