【发布时间】:2013-11-30 06:32:32
【问题描述】:
我知道includes 渴望加载所有关联的模型属性,例如:
@posts = Post.includes(:user)
将为每个帖子加载具有所有用户属性(姓名、出生日期、登录 ....)的所有帖子
如果我是对的,我们不能使用带有包含的 select 来获取像这样的一些属性:
@posts = Post.includes(:user).select("posts.*, user.name as user_name")
所以,通过连接可以使用 select :
posts = Post.joins(:user).select("posts.*, user.name as user_name")
我的问题是:当我在joins 中使用select 时,我们可以称之为eager loading 吗?
如果是的话,是
posts = Post.joins(:user).select("posts.*, user.*")
相当于? :
posts = Post.includes(:user)
【问题讨论】:
-
请问您提问的目的是什么?可能有助于为您创建一个好的答案:)
-
@RichPeck 我添加了一些例子来更清楚:)
-
感谢更新示例!老实说,我不太确定这两种查询类型的机制,但我添加了对 RailsCast 的引用,它演示了它们如何为您工作
-
我问是因为我想在原始查询之上加载一些数据,最后我在关联上使用了一个选择查询,我认为您可能也需要它
标签: ruby-on-rails activerecord