I''ll be making a few assumptions here since your full schema is not
shown here, but this is what I can deduce from your description:
1. You have a reflexive many-to-many relation from User back to User
though Friend.
2. Friend has it''s own model class so has it''s own identity
(and id
column).
table: friends
t.column :id, :integer # <-- I added this here for clarification
t.column :user_id, :integer #Owner of this friendship
t.column :friend_id, :integer #FK to User table
Given both 1 & 2 above are true, you could add another many-to-many
relation for Friend and Activity through FriendActivity:
table: friend_activities
t.column :friend_id, :integer #FK to friends table
t.column :activity_id, :integer #FK to activities table
I didn''t put a ton of thought into this, but I believe it''s
the approach
I would try first.
TheZ wrote:> I have the following schema.
>
> table: user
> t.column :id, :integer
>
> table: friends
> t.column :user_id, :integer #Owner of this friendship
> t.column :friend_id, :integer #FK to User table
>
> table: activity
> t.column :user_id
>
> Basically I want to display all activity from friends that i have
>
> I currently have the following has_many finder...
>
> has_many :friend_activities,
> :class_name => ''Activity'',
> :finder_sql => ''select a.* from activities a, friend f
where
> a.user_id = f.friend_id and f.user_id = #{id}''
>
> Is it even possible to change the above has_many to not user
> the :finder_sql but using some combination
> of :through, :source ... ???? If so can someone please help.
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---