Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4包含了一个即时加载功能,不会为我保存一个数据库调用_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4包含了一个即时加载功能,不会为我保存一个数据库调用

Ruby on rails Rails 4包含了一个即时加载功能,不会为我保存一个数据库调用,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,根据第13.1.1段的规定,应按照以下方式进行紧急加载 Post.includes(:category, :comments) 这正是我正在做的(即使是非常渴望加载) 但我看到了服务器日志: Texto Load (0.6ms) SELECT "textos".* FROM "textos" WHERE "textos"."id" = $1 LIMIT 1 [["id", "19"]] Texto Load (0.9ms) SELECT "textos".* FROM "text

根据第13.1.1段的规定,应按照以下方式进行紧急加载

Post.includes(:category, :comments)
这正是我正在做的(即使是非常渴望加载)

但我看到了服务器日志:

  Texto Load (0.6ms)  SELECT "textos".* FROM "textos" WHERE "textos"."id" = $1 LIMIT 1  [["id", "19"]]
  Texto Load (0.9ms)  SELECT "textos".* FROM "textos" WHERE "textos"."id" = 19 ORDER BY "textos"."id" ASC LIMIT 1
  Usuario Load (0.8ms)  SELECT "usuarios".* FROM "usuarios" WHERE "usuarios"."id" IN (12)
  Profile Load (0.9ms)  SELECT "profiles".* FROM "profiles" WHERE "profiles"."usuario_id" IN (12)
  Comment Load (0.8ms)  SELECT "comments".* FROM "comments" WHERE "comments"."commentable_type" = 'Texto' AND "comments"."commentable_id" IN (19)
  SQL (1.1ms)  SELECT "tags".*, "t0"."texto_id" AS ar_association_key_name FROM "tags" INNER JOIN "tags_textos" "t0" ON "tags"."id" = "t0"."tag_id" WHERE "t0"."texto_id" IN (19)
  Likes Load (1.2ms)  SELECT "likes".* FROM "likes" WHERE "likes"."texto_id" IN (19)
  Dislikes Load (1.0ms)  SELECT "dislikes".* FROM "dislikes" WHERE "dislikes"."texto_id" IN (19)
  SQL (1.3ms)  SELECT "text_medals".*, "t0"."texto_id" AS ar_association_key_name FROM "text_medals" INNER JOIN "text_medals_textos" "t0" ON "text_medals"."id" = "t0"."text_medal_id" WHERE "t0"."texto_id" IN (19)
我能看到的唯一内部联接来自联接表,这很有意义

我做错了什么?我很确定这是件蠢事,但我找不到。我将感谢任何洞察力

忍者编辑:

在where之后尝试使用约束会产生明显的差异

Text.where(:id => params[:id]).includes({usuario: :profile }, :comments, :tags, :likes, :dislikes, :text_medals).first

我设法用
eager\u load
而不是
includes

解决了这个问题,它按预期工作。当您执行类似于
@text.comments.each do | c | put c end
的操作时,不会对
注释
标记
等进行单独查询;这就是真正影响性能的地方。我认为它在一个查询中占用了所有资源,最多两个。
Text.where(:id => params[:id]).includes({usuario: :profile }, :comments, :tags, :likes, :dislikes, :text_medals).first