Rails 5 中的“left_joins”和“includes”有什么区别?

dav*_*mcd 5 activerecord ruby-on-rails ruby-on-rails-5

在Rails 5中,他们添加了ActiveRecord查询方法left_joinsleft_joins和 和有什么区别includes?我一直将其视为includes左连接。

Mar*_*sky 5

includes默认情况下会在 2 个查询中加载关联数据,就像preload. 但通过额外的references调用,它从使用两个单独的查询切换为创建单个LEFT OUTER JOINlike left_joins

参考文献:

预加载、预加载、包含和连接

理解 ActiveRecord 连接、包含、预加载和 eager_load