Ruby on Railsを使ってアプリケーションを開発していると、namespaceという単語を耳にすることが多くあります。ここでは、特にルーティングのコンテキストでのnamespaceについて説明します。
namespaceとは何か?
namespace
とは、ルーティングを一定の範囲(名前空間)でグループ化するための方法です。これにより、同じコントローラー名やアクション名を異なる範囲で使い分けることができます。
namespace
の基本的な使用法
例えば、管理者向けのページを作成する際には、namespaceを用いてadminという名前空間を作成します。
namespace :admin do
resources :users
end
上記のようにルーティングを設定すると、Admin::UsersController
が作成され、その中にあるアクションへのルーティングが設定されます。また、ビューもapp/views/admin/users
ディレクトリの下に作成します。
namespaceの利点
namespace
を使用することで、以下のような利点があります。
コントローラーやビューを整理しやすくなります。例えば、管理者向けのページと一般ユーザー向けのページを分けることができます。
URLがわかりやすくなります。例えば、/admin/users
というURLが管理者向けのユーザー管理ページであることを明示的に示すことができます。
注意点
ただし、namespace
を使用する際には、以下の点に注意が必要です。
コントローラーはnamespace
で指定した名前のディレクトリの下に作成する必要があります。例えば、上記の例ではAdmin::UsersController
をapp/controllers/admin/users_controller.rb
として作成します。
namespace
でグループ化したルーティングのコントローラー内で使用するヘルパーメソッド(例えば、form_withやlink_to)はnamespace
を考慮に入れる必要があります。例えば、form_with model: [@admin, @user]
のように指定します。