Ruby
Rails
activeadmin
Rails5

[rails5.2] Active Adminの導入

Active Adminを利用してみました。導入手順を残しておこうと思います。

環境

Rails 5.2.0
ruby 2.5.1
mysql 5.7.20

 まず

Gemfile
gem 'activeadmin'

※deviseはすでにインストール済みです

Install

管理ユーザーのモデルを今回は「ActiveAccount」として作成したいと思います。

$ bundle install
$ bin/rails g active_admin:install --skip-users # オプションはadminuserを作成しない
      create  config/initializers/active_admin.rb
      create  app/admin
      create  app/admin/dashboard.rb
       route  ActiveAdmin.routes(self)
    generate  active_admin:assets
   identical  app/assets/javascripts/active_admin.js.coffee
   identical  app/assets/stylesheets/active_admin.scss
      create  db/migrate/20180518132718_create_active_admin_comments.rb

# 管理ユーザーのモデルの作成
$ bin/rails g active_admin:install AdminAccount
      invoke  devise
    generate    No need to install devise, already done.
      invoke    active_record
      create      db/migrate/20180518133149_devise_create_admin_accounts.rb
      create      app/models/admin_account.rb
      invoke      rspec
      create        spec/models/admin_account_spec.rb
      invoke        factory_bot
      create          spec/factories/admin_accounts.rb
      insert      app/models/admin_account.rb
       route    devise_for :admin_accounts
        gsub    app/models/admin_account.rb
        gsub    config/routes.rb
      append    db/seeds.rb
    conflict  config/initializers/active_admin.rb
Overwrite /Users/sakai/sakaibox/railsApps/blog/config/initializers/active_admin.rb? (enter "h" for help) [Ynaqdh] n #active_admin.rbは上書きしない
        skip  config/initializers/active_admin.rb
       exist  app/admin
   identical  app/admin/dashboard.rb
      create  app/admin/admin_accounts.rb
      insert  config/routes.rb
    generate  active_admin:assets
   identical  app/assets/javascripts/active_admin.js.coffee
   identical  app/assets/stylesheets/active_admin.scss
   identical  db/migrate/20180518132718_create_active_admin_comments.rb

ActiveAdminの設定ファイルを変更

今回は管理者ユーザーモデルを「AdminAccount」として作成しているので
下記のように修正します。

config/initializers/active_admin.rb
- config.authentication_method = :authenticate_admin_user!
+ config.authentication_method = :authenticate_admin_account!
- config.current_user_method = :current_admin_user
+ config.current_user_method = :current_admin_account
- config.logout_link_path = :destroy_admin_user_session_path
+ config.logout_link_path = :destroy_admin_account_session_path

管理画面のURLの変更

デフォルトでの管理画面のURLは admin/xxx(admin/login、admin/logout等)に設定されているが
下記で変更可能です。

config/initializers/active_admin.rb
# config.default_namespace = :admin
config.default_namespace = :admin_login
# 確認
$ bin/rake routes
$ bin/rake db:migrate

# db/seeds.rbのデフォルトのユーザの記載があるので管理ユーザーを作成します。
$ bin/rake db:seed

確認

$ bin/rails s

http://localhost:3000/admin_login/login

参考

Active Admin
Railsで最速で管理画面を作る!