所以我實現了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
'following?'和'followed_by?'只需在連接表中查看記錄是否存在,是否可以? 'follow'可以通過id和'unfollow'將一個Repo.insert插入到連接表中去除這樣的記錄。他們應該是每個單線。 – Johannes
謝謝Johannes。我明白爲每個功能做了什麼,但我不知道如何實現它們。如果這是有道理的。 –