#アソシエーション?
簡単に説明するとモデルを利用したテーブル同士の関連付けのことですね。
テーブル同士で関連付けておき、一方のモデルからもう一方のモデルに
アクセスできるようにするためということですね。
#関連付けを行う理由
Railsでは、「関連付け(アソシエーション: association)」とは2つの
Active Recordモデル同士の繋がりのことですね。
2つモデルの間には関連付けを行なう必要がありますが、
その理由を知っていますか?
それはですね、関連付けを行う事でコードの共通操作をより
シンプルで簡単にできるからなんです。
#アソシエーション(1対1)定義の際に使用するメソッド
###has_oneメソッド
アソシエーションが1対1の時に使われます。
注意点としては、親モデル側に「has_one」の記述を、
子モデル側に「belongs_to」を書きます。
「belongs_to」メソッドについては下記のURLに説明がありますので、
そちらを参考にして下さい。今回は説明を省きます。
まとめると下記のようになりますね。
今回、説明する上で下記のアソシエーション(関係)で記述例を
載せていきます。
userとaddress 1対1
#アソシエーションの定義記述方法
先にUserモデルの記述例を載せていきます。
class User < ApplicationRecord
has_one :address
end
書き方としましては、has_one :モデル名(単数形)
今回は「1対1」のためモデル名は単数形になります。
Userモデルの記述は以上です。
次は、addressモデルの記述にいきましょう。
class Address < ApplicationRecord
belongs_to :user
end
書き方としましては、 belong_to :モデル名(単数形) になります。
これで、Userモデルとaddressモデル間のアソシエーションができましたね。
#まとめ
「1対1」のアソシエーションには、has_oneを用いましょう!!
「1対1」を記述する際は、「1対多」・「多対多」などのように
モデル名が複数形ではなく、単数形で記述するのであまり気を付けなくても
大丈夫ですね笑
これまでで、「1対1」・「1対多」の説明をさせて頂いたので残りは
「多対多」になりますね。
これで「1対1」のアソシエーションの定義の仕方などわかって頂けたら嬉しいです。
ご覧頂きありがとうございました。
####以上。