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"