👏
【Rails】namespaceについて
PFフェーズを控え、アプリケーション詳細設計の部分が苦手なため、ざっくりとかみ砕いて復習できればと思い選びました。
namespaceとは
namespace とは、決めた名前でルーティングのグループ分けをするための仕組みです。(名前空間ともいう)
例えばECサイトでは、買い物をする会員と、サイトを管理する管理者が存在し、/items
という商品一覧を表示するURLがあるとします。このページの機能やデザインは会員側と管理者側で違うため、URLを分ける必要があります。その際に使用するものです。
namespace使い方
上記の例のようにECサイトの商品一覧を会員側と管理者側で分ける場合
ルーティング
例としてECサイトの商品一覧ページを/items
のURLにする場合は下記のような書き方になりますが、このままでは会員側と管理者側で分けられていない状態となってしまいます。
Rails.application.routes.draw do
resources :items
end
管理画面のコントローラをAdmin
というグループにまとめたいと思った場合に、namespaceを使って以下のように変更することができます。
Rails.application.routes.draw do
namespace :admin do
resources :items
end
end
上記記述により、管理画面のコントローラはAdmin::ItemsController
というように名前空間が追加され、URLの頭にも/admin
が追加されるようになりました。
まとめ
namespaceを使用する場合は
- URLは指定のパスにしたい
- ファイル構成も指定のパスにしたい
上記の場合に使用されます。
また、namespaceを使用することでコントローラやビューファイルが app/controllers/admin
や app/views/admin
などの特定のディレクトリ内に配置することができます。
ここではコントローラやビューの実装方法は割愛してしまいましたが、気になる方はいろいろな記事やカリキュラムがあるのでそちらを参考にしてみるといいかと思います。
参考
Discussion