アソシエーション
アソシエーションとは どれが誰の投稿なのかを関連付けるもの
アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる
twitterを例にすると、1ユーザー(userテーブル)に対し、複数ツイート(tweetテーブル)が結びついている
参照先テーブル(被参照テーブル)
関連において主キーを持つテーブル
usersテーブル
参照元テーブル
外部キーを持つテーブル
tweetsテーブル
※ 主キー:関係データベースにおける行(レコード)を一意に識別するための列(カラム)(usersテーブルのid)
※ 外部キー:他のテーブルとの関連づけに使うキー(tweetsテーブルでusersテーブルに関連づけされたカラム。要はtweetsテーブルのuser_id)
belongs_to
参照先(userモデル)から値を参照できる
tweet.rb class Tweet < ApplicationRecord belongs_to :user end
has_many
belong_toと合わせて使うことで双方向の関係を定義可能になる
user.rb class User < ApplicationRecord has_many :tweets end
tweetが複数形になっていることから、userに対して複数のTweetオブジェクトが存在する意味になる
has_one
1対1に関係
has_many through
多対多の関係を表すことができる