37
39

More than 5 years have passed since last update.

rails adminを導入する

Posted at

Railsアプリに管理画面を導入する必要があったので、
管理画面を簡単に作成できるrails adminをherokuに導入した。
rails adminの他にdevise(認証管理)とcancan(権限管理)も利用する。

環境

$ ruby -v; rails -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
Rails 4.2.1

devise設定

Gemfileに追記

gem 'devise'

インストール

$ rails g devise:install
$ rails g devise user

設定追記。
必要であればproduction.rbにも記載する。

$ vim config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

rails_admin設定

Gemfileに追記

gem 'rails_admin'

インストール

$ rails g rails_admin:install
           ?  Where do you want to mount rails_admin? Press <enter> for [admin] > 
       route  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
      create  config/initializers/rails_admin.rb

以下のコメントアウトを外す

$ vim config/initializers/rails_admin.rb
  ## == Devise ==
  # config.authenticate_with do
  #   warden.authenticate! scope: :user
  # end 
  # config.current_user_method(&:current_user)

cancan設定

Gemfileに追記

gem 'cancan'

インストール

$ rails g cancan:ability

管理権限を以下のファイルで設定する

$ vim app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)
    if user && user.admin?
      can :access, :rails_admin   # grant access to rails_admin
      can :manage, :all           # allow superadmins to do anything
    end 
  end
end

adminユーザーを識別するためにadminカラムを追加する

$ rails g migration AddAdminToUser admin
$ bundle exec rake db:migrate

consoleでadminをtrueに設定する

$ rails c
> user = User.find(1)
> user.update_attribute(:admin, "true")

以下のコメントアウトを外すことで、
adminに設定したユーザーのみが管理画面にアクセスすることができる。

$ vim config/initializers/rails_admin.rb
  ## == Cancan ==
  # config.authorize_with :cancan

herokuデプロイ

特に躓く箇所はないが、
手動でmigrationコマンドを打つ必要があった。

$ heroku run rake db:migrate --app ***

参考資料

sferik/rails_admin
devise、cancanと連携して管理者ユーザーにのみRailsAdminを公開するには | hrendoh's memo

37
39
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
37
39