我有以下关联:
class User < ActiveRecord::Base
has_many :followers, class_name: "Follow"
has_many :following, class_name: "Follow", foreign_key: "follower_id"
has_many :posts
end
class Follow < ActiveRecord::Base
belongs_to :user
belongs_to :follower, class_name: "User", foreign_key: "follower_id"
end
我希望能够做类似的事情:
current_user.followers
并取回一个 User 对象,而不是 Follow 对象。我为这样的用户做了类似的事情:
class User < ActiveRecord::Base
has_many :post_favorites, class_name: "Favorite"
has_many :favorites, class_name: "Post", through: :post_favorites, source: :post
end
然后我将收藏夹的belongs_to 关系添加到:user 和:post。这很好用。但是,在我试图与追随者一起完成的工作中,它没有双向关系(我猜这是我描述它的最佳方式),所以我无法使用相同的方法让它工作。
有没有更聪明的方法来解决这个问题?我说的是一种类似于 Twitter 的“关注/关注者”计划,用户可以关注某人并让其他人关注他们。
我的 Follow 模型只有一个 user_id 和一个 follower_id 字段。我想如果我做类似的事情它会起作用:
current_user.followers.each {|follower| follower.user}
但我希望最终能够做类似的事情:
current_user.followers.posts