用户有很多帖子,并且发送了很多跟随者。如何选择特定用户所关注的所有用户的所有帖子?
class User < ActiveRecord::Base
attr_accessible :email, :pwd_hash, :token, :username, :password, :avatar
has_many(
:follows_recieved,
class_name: 'Follow',
foreign_key: :followee_id,
primary_key: :id
)
has_many :followers, through: :follows_recieved, source: :follower
has_many(
:follows_sent,
class_name: 'Follow',
foreign_key: :follower_id,
primary_key: :id
)
has_many :followees, through: :follows_sent, source: :followee
has_many(
:posts,
class_name: "Post",
foreign_key: :user_id,
primary_key: :id
)
更新
感谢screenmutt让我走上正轨。
我无法使用find_all_by_relation但我可以使用find_all_by_field
所以我只是映射了followee id
ids = Follow.find_all_by_follower_id(current_user.id).map{ |f| f.followee_id }
posts = Post.find_all_by_user_id(ids)
答案 0 :(得分:1)
类似的东西应该有用。您始终可以将其抽象为方法。
Post.find_all_by_user(@current_user.followees)
答案 1 :(得分:0)
我想你可以写
has_many :posts
代替