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 Active Record Query Interface — Ruby on Rails Guides , 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?