Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 在关联上调用关联时,是否有一种方法可以使用ActiveRecord而不是两个SQL查询?_Ruby On Rails_Associations_Rails Activerecord - Fatal编程技术网

Ruby on rails 在关联上调用关联时,是否有一种方法可以使用ActiveRecord而不是两个SQL查询?

Ruby on rails 在关联上调用关联时,是否有一种方法可以使用ActiveRecord而不是两个SQL查询?,ruby-on-rails,associations,rails-activerecord,Ruby On Rails,Associations,Rails Activerecord,假设我们有用户、帖子和评论。用户有很多帖子,帖子有很多评论,属于一个用户。评论只属于帖子 假设我有一条评论,我想让用户与帖子关联 我可以做:comment.post.user 这会触发2个SQL查询(除非帖子已经缓存): 现在,我不是在问是否可以对此进行一次SQL查询。我知道是的。有没有办法通过ActiveRecord只进行一次查询 我想,如果上述交易是在交易中完成的,那可能也没什么大不了的,但我怀疑这是真的 您可以使用。includes方法:是的,它们称为联接。在您回顾这篇文章之后,如果您仍有

假设我们有用户、帖子和评论。用户有很多帖子,帖子有很多评论,属于一个用户。评论只属于帖子

假设我有一条评论,我想让用户与帖子关联

我可以做:
comment.post.user

这会触发2个SQL查询(除非帖子已经缓存):

现在,我不是在问是否可以对此进行一次SQL查询。我知道是的。有没有办法通过ActiveRecord只进行一次查询


我想,如果上述交易是在交易中完成的,那可能也没什么大不了的,但我怀疑这是真的

您可以使用。includes方法:

是的,它们称为联接。在您回顾这篇文章之后,如果您仍有困难,请尝试一些SQL,发布表结构和您尝试过的内容,我们将提供帮助!我知道。我说我知道可以进行一个SQL查询,这种方式是连接,但是在我上面展示的例子中,ActiveRecord有没有一种很好的方法可以做到这一点。错过了这一部分,我会编辑主题以包含ActiveRecord,然后删除SQL标记。与SQL相比,这更像是一个activeRecord问题。
Post Load (0.8ms)  SELECT  "posts".* FROM "posts"  WHERE "posts"."id" = $1 LIMIT 1  [["id", 1]]
User Load (0.4ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]