I''m having issues getting :include to eagerly load data in a "belongs_to" association. Here''s the breakdown: Users have friends and an avatar image. If I am loading all the user''s friends I want to also eagerly load the images for those users in the same SQL query -- instead of 1 query per friend, which adds up quickly. Here are my models: Image belongs_to :imageable, :polymorphic => true User has_many :images, :as => :imageable has_many :friends, :include => :user, Friend # The user belongs_to :owner_user, :class_name => "User", :foreign_key =>"user_id", # The friend belongs_to :user, :class_name => "User", :foreign_key => "friend_id", :include => :images As you can see I use :include on User#friends for "user" and then on Friend#user for "images". My thinking is, when accessing User#friends, rails will eagerly load the User object for each friend and all the images for that user. friend -> user -> images Currently the first part works (friend -> user), but it does not query for the images at the same time. So when I list all a user''s friends with their avatars I get a lot of SQL queries. What am I doing wrong? How can I optimize this? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Mozmonkey wrote:> I''m having issues getting :include to eagerly load data in a > "belongs_to" association. Here''s the breakdown:I believe there is a known bug with eager loading and belongs_to. I just can''t find the ticket in trac. -- Josh Susser http://blog.hasmanythrough.com -- 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 -~----------~----~----~----~------~----~------~--~---
Is there any work around that you can think of? Thanks! Jeremy --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
I thought the known problem was the other way round? ie if I''m loading some Images and i want to include :imageable then we''re stuck (because we don;t know which tables to join on, and even if you do it would probably be rather ineffecient. (There is a patch out there (blowing my own horn for a second: http://dev.rubyonrails.org/ticket/9640), which does address this (although mainly as a side effect of completely replacing :include)). You can get this by hand: give the array of things, find the distinct types and do one query per type. In this case you do get a warning about not being able to :include the polymorphic association. I thought the other way round was ok though. The code in associations.rb certainly looks like it''s trying to handle it. Fred --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
OK, so using polymorphic is what breaks this? So should is it more efficient to have different Models for different image types? I''ll also go checkout your solution right now. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---