Oh wow I didn't know you could do that. Gabe.beers += 1
On 22/10/2010, at 17:29, Gabe Hollombe <[email protected]> wrote: > In my excitement I pasted the wrong thing from my test console. > > Assuming users have many groups through memberships, what you want is: > > Membership.where(:group_id => (Membership.select(:group_id).where(:user_id => > 1).project)) > > > Cheers, > -g > > > On Fri, Oct 22, 2010 at 5:24 PM, Gabe Hollombe <[email protected]> wrote: > This arel query: > > Membership.where(:id => (Membership.select(:id).where(:user_id => 1).project)) > > Gives me this SQL: > > Membership Load (0.2ms) SELECT "memberships".* FROM "memberships" WHERE > ("memberships"."id" IN (SELECT id FROM "memberships" WHERE > ("memberships"."user_id" = 1))) > > Basically, my understanding of #project, is that it causes the Arel chain you > call it on to generate it's SQL at evaluation time. > > I think that'll work for you =-) > > -g > > > On Thu, Oct 21, 2010 at 11:15 PM, Bodaniel Jeanes <[email protected]> wrote: > Ah the part about other memberships wasn't clear. The problem is that > memberships is already joined into the query so it needs to be aliased and > then another join performed. I'd do it the way you are doing it now, really. > If you want to make it 1 query you could use @user.board_ids.to_sql to embed > it in the conditions as a sub-query... maybe. > > Bo > > Bodaniel Jeanes > W http://bjeanes.com > E [email protected] > T +61412639224 > [email protected] bojeanes > > > > > On Thu, Oct 21, 2010 at 7:06 AM, Ben Hoskings <[email protected]> wrote: > 2010/10/21 Bodaniel Jeanes <[email protected]> > > Ben, > > I assume you are doing has_many :boards, through => :memberships? > > Isn't this just @user.memberships? Or are users associated with boards in a > different wy? > > Yep, User -> Membership and Board -> Membership are both standard has_many > relationships. > > So, current_user.memberships is all this user's memberships. I'm after all > the memberships on all the boards this user is a member of. That is, for > every membership that Membership.where(:user_id => current_user.id) returns, > I want to also include every other membership to the corresponding board. > > (The purpose of this is a readable_by filter for Membership: it's all the > memberships that this user can know exist. That is, a given user can see all > the memberships on all the boards they're a member of.) > > (If there's a better way to do what I'm trying to do then I'd be keen to hear > that too.) > > —ben_h > > -- > You received this message because you are subscribed to the Google Groups > "Ruby or Rails Oceania" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rails-oceania?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby or Rails Oceania" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rails-oceania?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby or Rails Oceania" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rails-oceania?hl=en. -- You received this message because you are subscribed to the Google Groups "Ruby or Rails Oceania" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rails-oceania?hl=en.
