Active Record: Eager Loading (syntax question)

Let's have model :parents and :children, where one parent can have many
children, and that I want to do something like this:

and children.cfield=#{...}")

plist.each { |p| do_something_with(p,p.children) }

Now I learned from , 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':

and children.cfield=#{...}")

However, this raises the exception that there would be no column

It seems that with 'includes', we can only query based on values of the
Parent table.

Is this correct?

In rails 4.1 (or possibly 4.0) and later you must use references if you are adding conditions on one of the joined columns, ie


So that rails knows it must use the joins based eager loading strategy (rails used to try and guess this for you but this was rather error-prone). You also don’t need the select(’*’)