所以我实现了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。我明白为每个功能做了什么,但我不知道如何实现它们。如果这是有道理的。 –