どうも、豆腐メンタルです。
最近、RubyやったりJavascriptだったり、いまいち何をやりたいか定まっていないながら
今回はRubyについて書きたいと思います。
久しぶりにRuby,Rails触ったら思いの外知識が抜けていました...
アソシエーションとは
Railsのアソシエーションとは、モデル(テーブル)同士の繋がりを定義する仕組みです。
これを使うことで、複雑なSQLを書かずに直感的にデータを取得できるようになります。
なぜ「アソシエーション」が必要なのか?
結論、「DBとのやり取りをサボるため」
本来、別々のテーブルにあるデータを紐づけるには、複雑なSQLを書かなければなりません。
しかし、Railsのモデルに
has_many
belongs_to
と一言添えるだけで、Railsが「あ、このテーブル同士は仲良しなんだな」と理解して、面倒なデータ取得をすべて肩代わりしてくれるようになります。
具体例
例として、動画投稿サイトを作るとしましょう
動画投稿サイトをRailsで作る場合、「User(投稿者)」と「Video(動画)」という2つのモデルが登場します。
1人の投稿者は、たくさんの動画をアップロードできる
→has_many
1本の動画は、1人の投稿者に紐付いている
→belongs_to
# 投稿者側
class User < ApplicationRecord
# 投稿者は多くの投稿動画を持つ
has_many :videos
end
# (動画側)
class Video < ApplicationRecord
# 動画は特定の投稿者に属している
belongs_to :user
end
するとどうなる?
この設定をすることにより、コントローラーやビューの中で
モデルに紐づくDBの値を取ってくることができます
はえ〜便利
最後に
当時、プログラミング学習を初めてやった時は
この「アソシエーション」の仕組みがわかっていなかった。
概念的なものではなんとなーくわかったつもりではいたけども、理解は浅かったかなと思ってます。
では、また次回...(いつになるかな)