最近はRubyOnRailsをごりごりいじって色々やってます。 その中でrails_admin gemを導入する機会があったのですが、結構つまづいてしまったので記録として残しておこうと思います。
Rails – 4.1.0 Ruby – 2.1.0 rails_admin – 0.6.2 devise – 3.2.4
まずはGemfileに以下を追記します。
gem 'rails_admin' gem 'devise'
rails_adminでは管理者ログインとしてDevise gemを使うことが出来ます。 その他にもSorceryやManuallyというgemも使えるようですが、自分はDevise gemしか使ったことないのでDeviseにします。
そしてインストールしてdeviseをインストールします。
$ bundle install $ bundle exec rails g devise:install
色々出てきますが、フラッシュメッセージの部分だけ修正します。
app/views/layouts/application.html.erb
Cafe <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %><%= notice %>
<%= alert %>
<%= yield %>
追記した部分を色でつけておきました。
次はmodelを作ります。admin_user というmodelでも作りますか
$ rails g devise admin_user
管理者は直接DBにデータを入れたいため、:registerableと:recoverableを消しておきます。
app/models/admin_user.rb
class AdminUser
generateしたときに生成されたマイグレーションファイルの中からもregisterableとrecoverableは外しておきます。
db/migrate/****_devise_create_admin_users.rb
class DeviseCreateAdminUsers
ここまで出来たらマイグレーションしておきましょう。
$ bundle exec rake db:migrate
次はようやくrails_adminをがちゃがちゃします。インストールしましょう。そのときにどのパスで入れるようにするか聞かれるので今回は /admin_user でやってみたいと思います。
$ rails g rails_admin:install ? Where do you want to mount rails_admin? Pressfor [admin] > admin_user
でここからdeviseと連携させます。色々な記事では自動的に連携されてるっぽいのですが、僕の場合はそうはいかなかったので手動でやります。
config/initializers/rails_admin.rb
RailsAdmin.config do |config| ### Popular gems integration ## == Devise == config.authenticate_with do warden.authenticate! scope: :admin_user end config.current_user_method(&:current_admin_user) ## == Cancan == # config.authorize_with :cancan ## == PaperTrail == # config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0 ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration config.actions do dashboard # mandatory index # mandatory new export bulk_delete show edit delete show_in_app ## With an audit adapter, you can add: # history_index # history_show end end
ここで大切なのは今回、admin_userとして使用するため、シンボルを :admin_user に変更、9行目の部分も current_admin_user に変更しました。まだこういうとこ慣れてないって感じます・・・
んで次はrouteをちょっといじります。デフォルトの状態ではコンフリクトしてしまうので順番を上下逆にします。 4行目と5行目を逆にして devise_for が上にくるようにしましょう。
Rails.application.routes.draw do root 'home#index' devise_for :admin_user mount RailsAdmin::Engine => '/admin_user', as: 'rails_admin'
少し長かったですが、これで終わりです!あとはコンソールでユーザー作って実際にログインしてみましょう!
これで localhost:3000/admin_user にアクセス出来るのでアクセスしましょう!うまくいってればログイン画面に飛ばされ、ログインすると綺麗な画面が出てくるはずです!!
色々高機能らしいrails_admin、これから色々触ってみます!!
頑張って読んでます。面白い!
アスキー・メディアワークス
売り上げランキング: 26,917