Ruby on rails 什么';这两者之间的区别是什么;左“U连接”;及;包括「;在Rails 5中?
在Rails 5中,他们添加了ActiveRecord查询方法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
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
调用的情况下可以工作,所以谢谢