首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >includes..references..where与includes..where..references的区别

includes..references..where与includes..where..references的区别
EN

Stack Overflow用户
提问于 2018-12-27 11:25:16
回答 2查看 385关注 0票数 0

我使用Rails5.2并阅读项目代码,如下所示

代码语言:javascript
复制
blog = Blog.includes(:posts).references(:posts).where(uuid: params[:uuid])

当我在互联网上搜索时,我得到了像link这样的例子

代码语言:javascript
复制
Blog.includes(:posts).where(name: 'Blog 1').references(:posts)

references子句之前或之后放置where子句有什么区别吗?

EN

回答 2

Stack Overflow用户

发布于 2018-12-27 19:27:18

你应该从reference上阅读joinsincludespreloadeager_load & references

注意: includes并不总是创建单独的查询。

referencesincludeswhere子句之前使用(我在将项目从rails-3迁移到rails-5时使用,以解决列歧义问题)

也可以阅读this

票数 1
EN

Stack Overflow用户

发布于 2018-12-27 19:05:33

如果您在此处选中此link,您可以看到引用的定义。

简而言之,includes将运行一个单独的查询来获取所有的posts (在您的示例中),而不是每次您遍历博客时都获取它们。

现在,如果您想要在posts上添加一个where条件,那么您需要添加它。在您的情况下,您不需要包括它。

小示例:

blog = Blog.includes(:posts).where(uuid: params[:uuid]) ->将运行一个查询以从blogs获取博客,并运行一个查询以获取与此博客相关的所有posts

在另一种情况下,像这样:blog = Blog.includes(:posts).references(:posts).where(posts: { name: 'test' })您必须使用references,否则您的where条件将抛出错误

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53939401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档