QA@IT
«回答へ戻る

回答を投稿

findするまえにincludesしておくとムダなクエリが減ると思います。

Article.includes(:user).find(params[:id])

でおおよそ希望通りのクエリになるかと思います。

おおよそ、と書いたのは関連の方向(belongs_toなのかhas_manyなのか、またはhas_oneなのか)によって、どのように先読みすると効率が良いか、いろいろ挙動が変わるためです。

この種の問題は、Rails界隈(に限りませんが)では、「N+1問題」とよんだり、先読みを「eager load」とよんだりしているので、より詳しく知りたい場合、このあたりの後で検索してみてください。

`find`するまえに`includes`しておくとムダなクエリが減ると思います。

```ruby
Article.includes(:user).find(params[:id])
```
でおおよそ希望通りのクエリになるかと思います。

おおよそ、と書いたのは関連の方向(`belongs_to`なのか`has_many`なのか、または`has_one`なのか)によって、どのように先読みすると効率が良いか、いろいろ挙動が変わるためです。

この種の問題は、Rails界隈(に限りませんが)では、「N+1問題」とよんだり、先読みを「eager load」とよんだりしているので、より詳しく知りたい場合、このあたりの後で検索してみてください。