Let's have model :parents and :children, where one parent can have many children, and that I want to do something like this: plist=Parent.joins(:children).select('*').where("parents.id=children.parent_id and children.cfield=#{...}") plist.each { |p| do_something_with(p,p.children) } Now I learned from http://guides.rubyonrails.org/active_record_querying.html , that this is inefficient, due to the SELECT statements generated inside the block, and that I should do "eager loading" instead. From my understanding of the tutorial, I should replace 'joins' by 'includes': plist=Parent.includes(:children).select('*').where("parents.id=children.parent_id and children.cfield=#{...}") However, this raises the exception that there would be no column "children.cfield". It seems that with 'includes', we can only query based on values of the Parent table. Is this correct? -- 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 unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/f814f36645d4f47a87ebf77a0a8d3194%40ruby-forum.com. For more options, visit https://groups.google.com/d/optout.