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

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

実現したい内容

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

実現する方法

  • namespaceを使ってhttp://yourdomain.com/admin/のようなアクセスを実現
  • modelはそのまま使う
  • controllerやviewはadmin専用のファイルで管理する

実際につくってみた

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

1. deviseの導入

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

管理機能を作るのでAdminモデルを生成する点に注意

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

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

3. ルーティングを修正

config/routes.rbを修正

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

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

link_toなどに注意

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

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