Ruby on Rails – namespaceを適用してadminを切り分けてdeviseを使って認証

Railsで管理画面生成のgemを使わずに手っ取り早く作るにはnamespaceを適用してadminを切り分けるのがよさそう。
認証にdeviseというgemを使って、ささっと管理画面を作ってみたときのメモです。

実現したい内容

  • モデルのCRUDは認証済みの管理者だけが行う
  • 管理画面で作成したデータを公開する
  • 管理画面生成のgemを使わずにシンプルだがカスタマイズしやすい管理画面を作りたい

実現する方法

  • namespaceを使ってhttp://yourdomain.com/admin/のようなアクセスを実現
  • /admin以下はログイン済みの管理者ユーザのみアクセス化
    • 認証はdeviseというGemを使用
  • Modelはそのまま使う
  • Controller、View、Assets、Helperはadmin専用のファイルで管理する

実際につくってみた

Shopモデルを作成していく
管理者だけがShopモデルをCRUDできて、一般ユーザは一覧や詳細をみれるように

1. deviseの導入

詳しくは、Ruby on Rails – deviseを使ってユーザの認証機能をカンタン実装をご参照下さい。

上記サイトでは、Userモデルを作成していうるのですが、今回は管理機能を作るのでAdminモデルを生成する点に注意

2. scaffoldを使ってShopモデルを生成

魔法のコマンドscaffoldを使ってShopのCRUD完成です

3. ルーティングを修正

config/routes.rbを修正

4. adminディレクトリを作成

5. ファイルをコピーして名前やメソッドを変更

  1. admin配下のControllerやHelperの名前を変更
    • ShopsControllerAdmin::ShopsController
    • ShopsHelperAdmin::ShopsHelper
    • ShopsControllerTestAdmin::ShopsControllerTest
  2. form_forlink_toなどのURLをAdminありにしないといけない

6. deviseでの認証機能を実装

admin配下のcontrollerにbefore_action :authenticate_user!を追加する


もしよければ応援クリックお願いします
↓↓↓↓↓
にほんブログ村 IT技術ブログ IT技術メモへ