Railsで管理画面を作る際に便利なのが、ActiveAdmin。ただし、Rails4.1.1ではGemfileの設定に注意する必要がある。
ActiveAdminの準備
今までのRailsでGemfileを書くときは、下記の2行を追記して『bundle install』を実行する。今回はdeviseを使うので、deviseのgemも記述。
gem 'activeadmin' gem 'sass-rails' gem 'devise'
すると、以下のエラーが表示される可能性がある。(なければエラー解決の部分は読み飛ばしてください。)
$ bundle install Fetching gem metadata from https://rubygems.org/......... Fetching additional metadata from https://rubygems.org/.. Resolving dependencies.... Bundler could not find compatible versions for gem "activerecord": In Gemfile: activeadmin (>= 0) ruby depends on meta_search (>= 0.9.2) ruby depends on activerecord (~> 3.0.0.rc2) ruby rails (= 4.1.1) ruby depends on activerecord (4.1.1)
『activerecord』のバージョンが合っていないと言われるので『activerecord』の設定を修正してもよいが、Stackoverflowによると、Rails4.1と4.0では下記のように記述して『bundle install』することが推奨されているようだ。
gem 'activeadmin', github: 'gregbell/active_admin' gem 'devise'
これでGemの設定が完了すると思われる。
RailsアプリにActiveAdminをインストール
今度は実際に使うRailsアプリケーションでActiveAdminを有効にする。今回のdeviseの認証機能でユーザモデル名をUser以外にしたいので下記のようにした。(ちなみに、deviseを使いたくないときはオプションに–skip-usersをつける)
・ユーザモデル名を変えるとき
$ rails g active_admin:install [ユーザモデル名]
・ユーザモデル名をUserにするとき
$ rails g active_admin:install
・deviseの認証機能を使わないとき
$ rails g active_admin:install --skip-users
完了したらマイグレーションする。
$ rake db:migrate
これでとりあえず動くので、「http://localhost:3000/admin」にアクセスしてみよう。(deviseを使わない時は更に設定が必要となる)
初期のログインは下記のメールアドレスとパスワードでログインできるので、ログインしたらメールアドレスとパスワードを変更しよう。
Email:admin@example.com
Password:password
モデルのデータをActiveAdminの管理画面に表示する
管理画面で見たいモデルを用意する。(すでにモデルを作ってあれば不要)
$ rails g model Article title content:text $ rake db:migrate $ rails g active_admin:resource Article
これで管理画面にアクセスしてみると、Articleモデルの項目が表示されている。管理画面からデータを作成することができるが、そのためにはControllerでcreateメソッドを作らなければ作らないとデータを保存できないことに注意してください。