##アソシエーション(関連付け)
アソシエーションとは、モデルとDB間をまたいだデータの呼び出しをより簡単に行うことが出来る。
####アソシーションの定義
①モデルクラスにhas_manyやbelongs_toが定義されていること。
②所属するテーブル側に、クラス名_idというカラムがあること。
####用語の解説
※分かりやすくするために、ツイッターを例に解説します。
has_many → ユーザーは、自分の作成したツイートを複数個所持している状態である。
qiita.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :tweets
end
belongs_to →全てのユーザーは、いずれかのツイートを保持している。
qiita.rb
class Tweet < ApplicationRecord
belongs_to :user
end
####アソシエーションのメリット
・モデルをまたいだ呼び出しが簡単になる。
→userモデルのインスタンス.tweetsで呼び出しが可能になる
・アソシエーションを使用しない
ターミナル
[2] pry(main)> Tweet.where(user_id: user.id)
・アソシエーションを使用
ターミナル
[2] pry(main)> user.tweets