#はじめに
webアプリケーション作成途中何気なく使っていた
Routingネスト
と、
アソシエーション
の違いについて理解を深める為に纏めて見ました。
#1. Routingネストについて
一言で言うと
・コントローラのルーティングの記述の中に、別のコントローラへのルーティングを記述する事
例えば、
resources :tweets do
resources :comments, only: [:create]
end
と言う風にすれば、
『tweets/:id/comments』
の様なURL階層を設計することができる
#2. アソシエーションについて
定義は様々あると思いますが、
モデル間の関連付け(主従関係)
テーブル間のリレーションシップをモデルの上の関係として操作できるようにする仕組み
と言った所でしょうか。
用途としては関連付けたい2つのテーブルをhas_many、belongs_toで関連付けます
例えば
「tweet」
「comment」
二つのテーブルがあったとして
「一つのtweetは複数のcommentを持っており、commentは1つのtweetを持っている」
といった様な場合、
class Tweet < ApplicationRecord
has_many :comment
end
class Comment < ApplicationRecord
belongs_to :tweet
end
とすればアソシエーションの関連付けが出来る。
#3. 疑問に感じていた事
個人的にずっと疑問に感じていたのは、
アソシエーションしているのにRoutingネストって必要なのか?
って事です。ただ、
アソシエーション➡︎モデル間の関連付け
Routingネスト→URL設計(関係性のある紐つけ)
って言う意味をよく理解すればそんな疑問自体おかしい事に気付けました。
まとめ
閲覧頂きありがとうございます。
誤った認識等ございましたらご指摘お願いいたします。
またコロナと戦う全国の医療関係者の皆様に感謝を申し上げます。