我正在使用map
并阅读类似的项目代码
Rails5.2
在互联网上搜索时,我看到了类似link
的示例blog = Blog.includes(:posts).references(:posts).where(uuid: params[:uuid])
在Blog.includes(:posts).where(name: 'Blog 1').references(:posts)
子句之前或之后放置where
子句是否有区别?
答案 0 :(得分:1)
您应该从reference阅读val Mul1 = Sum1.zipWith(Sum2)(mul)
Mul1.onComplete {
...
}
,joins
,includes
,preload
和eager_load
注意:包含项并不总是创建单独的查询。
references
用于references
之后和includes
子句之前(我在将项目从rails-3迁移到rails-5时用于解决列歧义问题)
还请阅读this。
答案 1 :(得分:0)
如果在此处选中此link,则可以看到引用的定义。
简而言之,includes
将运行一个单独的查询来获取您所有的posts
(在您的示例中),而不是每次循环浏览博客时都获取它们。
现在作为参考,您想在where
上添加一个posts
条件,您需要添加它。就您而言,您无需包含它。
小例子:
blog = Blog.includes(:posts).where(uuid: params[:uuid])
->将运行查询以从blogs
获取博客,并运行查询以获取与此博客相关的所有posts
。
在另一种情况下,例如:blog = Blog.includes(:posts).references(:posts).where(posts: { name: 'test' })
,您将不得不使用references
,否则您的where
条件将引发错误