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