こんにちは、おーしまです。
今回はRuby on Railsのアソシエーションについてです。
アソシエーションとは、モデルのテーブル同士で関連を持たせることです。
tweetテーブルとuserテーブルがあった時に、
「このtweetはどのuserがしたものか」
ということを関連づけるということです。
- 1人のuserは複数のtweetができる
- 1つのtweetは複数のuserでできない
とした時は
/models/user
has_many :tweets
/models/tweet
belongs_to :user
と記述します。
これで、tweetとuserを関連づける事ができました。
しかし、アソシエーションにはN+1問題というものがあります。
N+1問題とは、アソシエーションを使用した時、データベースへのアクセス回数が多くなってしまう問題です。
例えば、userのtweetを全て一覧表示させる時に、そのuserが100万tweetをしていた場合、
100万回データベースにアクセスしてしまう
ことになってしまうのです。すごくPCが重くなります。
それを解決するのがincludesメソッドです。
<例> tweet.includes(:user)
で使用します。
これでuserが投稿したtweetを全て(100万tweet)1度のアクセスで、持ってくる事ができます。
今回はここまでです。
それでは、また〜