current_user.friends.posts

Hi all,

I have a pretty simple set of models.

current_user has a bunch of friends and each friend makes a lot of
posts.

I want to do something like current_user.friends.posts but the posts
method is missing.

I've come up with a bunch of ways to accomplish this but nothing looks
very good. What's the most elegant way to do it?

Thanks,
Alex

Thanks so much for your reponse.

Right now I have the following code:

has_many :friendships_by_me,
           :foreign_key => 'user_id',
           :class_name => 'Friendship' do
     def posts
      Post.find(:all,
                :include => {:user, :friendships},
                :conditions => ['friendships.user_id = ?', self.id])
     end

which should work but self.id is returning the id of the Friendship
class. How do I get it to return the id of the user?

Thanks,
Alex

This little one liner should do it for you, if I'm not mistaken.

current_user.friends.map(&:posts)

which is equivalent to:

current_user.friends.map{|f| f.posts}

Tyler

Awesome!

What worked for me was:

has_many :friends do
  def posts
    map(&:posts)
  end
end

That is so much nicer looking then my first attempt.