0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】namespace, scope, module

Posted at

はじめに

Rails 勉強中の👶です。
理解を深めるために日々の学びを記事にしています。
初心者の記事なので言い回しや記載に誤りがあるかも知れませんが、暖かく見守っていただけると幸いです。
(よろしければ間違いをコメントいただけると学び、励みになります!)

学んだこと

・Railsにおける namespace, scope, module

namespaceを使用

route.rbの記載

routes.rb
Rails.application.routes.draw do
  # 通常(比較用)
  resources :user, only: [ :index ]

  # namespace
  namespace :admin do
    resources :user, only: [ :index]
  end
end

ルーティング確認

グループ化されるもの:  Prefix、URI Pattern、Controller#Action(ファイル構造)
グループ化されないもの: -

      user_index GET  /user(.:format)       user#index
admin_user_index GET  /admin/user(.:format) admin/user#index

scopeを使用

route.rbの記載

routes.rb
Rails.application.routes.draw do
  # 通常(比較用、併記するとエラーになります)
  resources :user, only: [ :index ]

  # scope
  scope :admin do
    resources :user, only: [ :index]
  end
end

ルーティング確認

グループ化されるもの:  URI Pattern
グループ化されないもの: Prefix、Controller#Action(ファイル構造)

user_index GET  /user(.:format)       user#index
user_index GET  /admin/user(.:format) user#index

moduleを使用

routes.rb
Rails.application.routes.draw do
 # 通常(比較用、併記するとエラーになります)
  resources :user, only: [ :index ]

  # module
  scope :admin do
    resources :user, only: [ :index]
  end
end

ルーティング確認

グループ化されるもの:  Controller#Action(ファイル構造)
グループ化されないもの: Prefix、URI Pattern

user_index GET  /user(.:format)       user#index
user_index GET  /user(.:format) admin/user#index

ネスト構造のController・Viewを作る

namespaceなどで活用できます

$ rails g controller admin/users  # namespace

結果

      create  app/controllers/admin/user_controller.rb
      invoke  erb
      create    app/views/admin/user
      invoke  test_unit
      create    test/controllers/admin/user_controller_test.rb
      invoke  helper
      create    app/helpers/admin/user_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/admin/user.scss

フォルダ構造 比較

$ rails g controller users        # 通常
$ rails g controller admin/users  # namespace

スクリーンショット 2023-05-13 23.20.09.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?