获取所有用户的所有帖子

时间:2013-12-20 15:11:03

标签: ruby-on-rails ruby activerecord

用户有很多帖子,并且发送了很多跟随者。如何选择特定用户所关注的所有用户的所有帖子?

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)

2 个答案:

答案 0 :(得分:1)

类似的东西应该有用。您始终可以将其抽象为方法。

Post.find_all_by_user(@current_user.followees)

答案 1 :(得分:0)

我想你可以写

has_many :posts

代替