アソシエーション

アソシエーションとは どれが誰の投稿なのかを関連付けるもの

アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる

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

多対多の関係を表すことができる