When to eager load relationships in Rails and when it is not that good
Rails provides a way to eager load relationships when fetching objects, the main idea is to avoid queries N+1, but, when isn't a good idea when to do it?
Good
When rendering unique results that can not be cached, for example: table reports
Why? Most of the times you need to display related information
orders = Order.includes(:user, :line_items).completed
Try to avoid
When you use fragment cache
Why? Eager load is executed before the rendering, regardless the final result is already cached or not. If using eager loading, it will always be executed, but when allowing queries n+1 that query will be executed once to fill the cache, and that's it
products = Product.includes(:categories, variants: [:price]).search(keywords)
Use product.id & updated_at to fill a fragment cache and fetch the data from database only when needed, no extra info needed such as variants, categories, prices, etc