Ruby on rails 什么';这两者之间的区别是什么;左“U连接”;及;包括「;在Rails 5中?

Ruby on rails 什么';这两者之间的区别是什么;左“U连接”;及;包括「;在Rails 5中?,ruby-on-rails,activerecord,ruby-on-rails-5,Ruby On Rails,Activerecord,Ruby On Rails 5,在Rails 5中,他们添加了ActiveRecord查询方法left\u joins。left_join和includes之间有什么区别?我总是把includes看作左连接 默认情况下,在两个查询中加载关联数据,如下所示。 但通过额外的调用,它将从使用两个单独的查询切换到创建单个左外部联接 参考文献: Includes也将遵从。如果应用where子句,则在一次查询中加载并加载记录。@max但默认情况下,您不能通过where子句中的Includes使用已加载的表。您需要在引用中指定它们firs

在Rails 5中,他们添加了ActiveRecord查询方法
left\u joins
left_join
includes
之间有什么区别?我总是把
includes
看作左连接

默认情况下,在两个查询中加载关联数据,如下所示。 但通过额外的调用,它将从使用两个单独的查询切换到创建单个
左外部联接

参考文献:


Includes也将遵从
。如果应用where子句,则在一次查询中加载
并加载记录。@max但默认情况下,您不能通过
where
子句中的
Includes
使用已加载的表。您需要在
引用中指定它们
first我不确定您的意思,但您可以执行
Foo.includes(:bar).where(bar:{baz:'woo'})
。结果与使用eager_load时相同。@max是的,但如果将示例更改为
Foo.includes(:bar)。其中(“bar.baz='woo')
将抛出错误。查看
条件
中的零件docs@max但是我不知道
hash
符号在没有
references
调用的情况下可以工作,所以谢谢