2013-12-20 2 views
0

У пользователя много сообщений и есть много последователей, которые следует за отправленными. Как я могу выбрать все сообщения всех пользователей, которым должен следовать определенный пользователь?Получить все сообщения от всех пользователей, которых следует

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 
) 

UPDATE

Благодаря screenmutt для сдачи меня на верном пути.

я не мог использовать find_all_by_relation, но я мог бы использовать find_all_by_field

так что я просто отобразили followee иды

ids = Follow.find_all_by_follower_id(current_user.id).map{ |f| f.followee_id } 
posts = Post.find_all_by_user_id(ids) 

ответ

1

что-то похожее на это должно работать. Вы всегда можете абстрагировать его на метод.

Post.find_all_by_user(@current_user.followees) 
0

Я думаю, что вы можете написать

has_many :posts 

вместо

Смежные вопросы