👏

【Rails】namespaceについて

2023/10/30に公開

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/adminapp/views/admin などの特定のディレクトリ内に配置することができます。
ここではコントローラやビューの実装方法は割愛してしまいましたが、気になる方はいろいろな記事やカリキュラムがあるのでそちらを参考にしてみるといいかと思います。

参考

https://zenn.dev/ganmo3/articles/02c916a7ff9a48
https://qiita.com/ryosuketter/items/9240d8c2561b5989f049#namespace
https://zenn.dev/iloveomelette/articles/c3c5cbd280b901

Discussion