見出し画像

リレーションデータベースのアソシエーション

いくつもModelesを作っているが、各テーブルはアソシエーションという技術で関連付けを行うことができる。これにより、他のテーブルを呼び出すことで値を利用することができる。

アソシエーション

belongs_to、has_manyについて
テーブル間リレーションシップをモデル上の関係として扱う仕組み
【アソシエーション = モデル間の関連付け】
models.comment.rb
belongs_to :topic
と記載することでcommentモデルは一つのcommentに対して、一つのtopicを持つことができる。
models.topic.rb
has_many :comments
と記載することでtopicモデルは一つのtopic記事に対して、複数のコメントを持つことができる。
上記を書くことで、
<% topic.comments.each do |comment| %>
<h2 class="comment"><%= comment.comment %></h2>
<% end %>

一つの記事に保存されているcommentの値を表示させることができる。
@topicsはincludesにてキャッシュを持っているため、N+1問題を回避できるため、表示に対して時間がかかるような設計にならない。
Github
https://github.com/simesime3/pictgram
Rails08 いいね機能の作成課題

前回やったときはなんとなく利用していたが、どのように関連付けをすればいいかがわかるようになった。topic.commentsはtopicモデルでhas_many :commentsを行なっていることで参照ができるようになるので、非常にわかりやすい。
また、今回はコメント機能をつけるようにしている。如何せん表示の仕方はセンスがないなと感じました。

この記事が参加している募集

note感想文

この記事が気に入ったらサポートをしてみませんか?