↗️
【Rails】routes.rb の namespace, scope, module の違い
概要
ちょいちょい忘れるので、Rails のルーティングの namespace
, scope
, scope: :module
の違いをまとめました。
結論
パス(URL)に名前空間を追加するか | コントローラに名前空間を追加するか | |
---|---|---|
namespace | 追加する | 追加する |
scope | 追加する | 追加しない |
scope: :module | 追加しない | 追加する |
namespace
routes.rb
namespace :hoge do
resources :users, only: %i[index]
end
> rails routes | grep users
hoge_users GET /hoge/users(.:format) hoge/users#index
コントローラ
module Hoge
class UsersController < ApplicationController
def index; end
end
end
scope
routes.rb
scope :hoge do
resources :users, only: %i[index]
end
> rails routes | grep users
users GET /hoge/users(.:format) users#index
コントローラ
class UsersController < ApplicationController
def index; end
end
scope: :module
routes.rb
scope module: :hoge do
resources :users, only: %i[index]
end
> rails routes | grep users
users GET /users(.:format) hoge/users#index
コントローラ
module Hoge
class UsersController < ApplicationController
def index; end
end
end
Discussion