Find all messages from all friends


I have an app where users have friends, and friends can have messages
for friends to see. I would like to list all the messages that my
friends have easily.

I can use @user_friends = current_user.friends to find all my friends
and then I could loop through the friends to get each friend's messages
to place them in some array of messages I guess.

But, is there a simpler way to get that list of messages?

(I'm using has_many_friends plugin btw)


Message.all(:conditions => {:user_id => current_user.friends})

assuming the table messages has a column user_id.

Message.all(:conditions => {:user_id => current_user.friends})

as i see it that would give you an error (as current_user.friends is
an array not an integer).

nonestly i'd do it with a loop. and why not? it's easy and readable.

Any comments on the performance from anyone?

Don't worry about it until it's a problem. YAGNI.

But then again, you can do caching, paginate, intelligently use ajax
to load only what's needed, etc.

Thanks Wolas, actually that worked fine :slight_smile:

wow, i just learned something. ignore everything i said so far. i
have to try that immediately...

I'm a bit worried about the performance side of that request since there
can be a huge number of messages and users. Of course user_id should be
indexed in that table but I'm still worried.

this is still teh fastest way to do it since you are telling the db
fetch all of these ids at once.

Then again,

Don't worry about it until it's a problem

is kinda the best advice in the matter if you add. "or untill you are
finished, have done profiling and are bored of tv"