こんばんは!
今日からいよいよスクールのチーム開発が始まりました!
これまでは管理者側の機能を作ることがなかったため、namespaceというものを初めて知りました。本記事ではnamespaceの理解を深めるためにまとめていきたいと思います。
namespaceとは??
namespace とは、決めた名前でルーティングのグループ分けをするための仕組みです。
例えばECサイトの場合、会員が見ることができるページと管理者のみ見ることができるページを作る必要があります。そのために同じファイル上でif文を用いて管理者と会員で閲覧部分を分けるのは可読性も下がりますしコードが複雑化します。また、コントローラーの名前とモデル名が統一されていないため、設計上あまり好ましくありません。
この問題を解決できるのが、namespaceです!
namespaceの実装
同じデータを扱うコントローラーとviewを会員側と管理者側の2つ作成し、publicフォルダとadminフォルダに分けて管理します。また、ルーティングも会員側と管理者側で分けます。
コントローラー
$ rails g controller コントローラー名 #会員側
$ rails g controller admin/コントローラー名 #管理者側
ターミナルでコントローラーを上記の通り作成します。adminの部分はnamespaceのグループ名を入れればよいので、他のものに変更してもOKです。今回はadminで作成しています。作成した会員側のコントローラーのファイルはapp/controller/publicの配下に配置してください。
その後、必要なアクションを各ファイルごと記述をしてください。
ルーティング
routes.rbに以下のように記述します。(これは記述例です。必要・不要なアクションがあれば適宜記述を変えてください。また、admin部分はコントローラーを作成した際のnamespaceのグループ名に適宜変えてください)今回は会員側の記述にresourcesメソッドを使っていませんが、使用することができます。
Rails.application.routes.draw do
get 'items' => 'public/items#index' #会員側
namespace :admin do #管理者側
resources :items, only: [:index]
end
end
これで会員側と管理者側のページのURLを分けることができました!
一応namespaceの実装の説明は終わりですが、この方法以外にもscope module: :public do
などをroutes.rbに書くことでもviewページのURLを分けて管理することができるそうなので気になる方はぜひ!
今日もお疲れ様でした!