Forum: Ruby on Rails Find all messages from all friends

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
13d7a3ab12ec57e0d372d7115362cb91?d=identicon&s=25 comopasta Gr (comopasta)
on 2009-03-15 22:27
Hi,

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)

Thanks.
872535e214a9e3a98889bd8d069f0294?d=identicon&s=25 "Wolas!" (Guest)
on 2009-03-16 11:13
(Received via mailing list)
Message.all(:conditions => {:user_id => current_user.friends})

assuming the table messages has a column user_id.


On Mar 15, 10:27 pm, comopasta Gr <rails-mailing-l...@andreas-s.net>
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-03-16 11:47
(Received via mailing list)
> 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.
13d7a3ab12ec57e0d372d7115362cb91?d=identicon&s=25 comopasta Gr (comopasta)
on 2009-03-16 21:31
"Wolas!" wrote:
> Message.all(:conditions => {:user_id => current_user.friends})
>
> assuming the table messages has a column user_id.
>
>
> On Mar 15, 10:27�pm, comopasta Gr <rails-mailing-l...@andreas-s.net>

Thanks Wolas, actually that worked fine :-)
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.

Any comments on the performance from anyone?

Thanks.
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold (Guest)
on 2009-03-16 22:16
(Received via mailing list)
> 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.
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-03-17 09:06
(Received via mailing list)
> Thanks Wolas, actually that worked fine :-)

wow, i just learned something.  ignore everything i said so far. i
have to try that immediately...
872535e214a9e3a98889bd8d069f0294?d=identicon&s=25 "Wolas!" (Guest)
on 2009-03-17 11:49
(Received via mailing list)
> 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"

On Mar 16, 9:31 pm, comopasta Gr <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.