QA@IT
«質問へ戻る

質問を投稿

Rails での join した結果をオブジェクトに保存したい

ActiveRecord で、例えば User 1 - * Article なリレーションがあったとします。

Article のユーザーも一緒に取得したい時、

@article = Article.find(params[:id])
@user = @article.user

とすれば取れるには取れるんですが、2回SQLが走ってしまいます。これが、複数のリレーションになってくると効率悪いなぁと思ってしまいます。

ActiveRecord の join を調べてみると、joinするのはいいものの、今回でいう User は Articleオブジェクトに保存できないので、こういう場合は Rails でどう書くのがスマートか知りたいです。

よろしくお願いします。

ActiveRecord で、例えば User 1 - * Article なリレーションがあったとします。

Article のユーザーも一緒に取得したい時、

```
@article = Article.find(params[:id])
@user = @article.user
```

とすれば取れるには取れるんですが、2回SQLが走ってしまいます。これが、複数のリレーションになってくると効率悪いなぁと思ってしまいます。

ActiveRecord の join を調べてみると、joinするのはいいものの、今回でいう User は Articleオブジェクトに保存できないので、こういう場合は Rails でどう書くのがスマートか知りたいです。

よろしくお願いします。