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

Create the posts method yourself by extending the association:

has_many :friends do
def posts
#get posts here
end
end

See the Association Extensions in the api docs for a few variables that
you might need to make that work.

Alex Kroman wrote:

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

On May 23, 9:57 pm, Gabe Da silveira <rails-mailing-l…@andreas-

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.

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