Even if you already know what is the difference between includes
, preload
and eager_load
, maybe is not that clear when is better for you to use one vs the other.
Well, as you may know, with Rails/ActiveRecord you can preload associations in 2 different ways:
eager_load
).preload
)includes
by defaultWhen you use includes
Rails will decide which strategy to use for you. I think that this is a good default. Use includes
and let rails decide for you.
But, to be honest, that is not what I do…
preload
by defaultI (at least for now) prefer to use preload
explicitly by default, because that is also the default for includes
, and I think that is easier to know
what is going to happen just by watching the code.
I use eager_load
just when I already know that is significantly faster than the preload
.
I would say, “Don’t worry to much”, and just pick one of this two strategies.
Practice will help you understand this concepts better. I have prepared some examples/excercises to help you understand how you can use this methods. Give it try!
Examples to learn the difference between preload, includes or eager_load
Making things work isn't enough for you any more? Now you need to consider performance and scalability?
... But you normally have troubles fixing n+1 queries and trying to find why active record is ignoring your "includes"?
Are you are worried because you feel unqualified to tackle tasks with complex data models?
Sign up to learn how to fix n+1 queries on Rails