どこでもDooor

参加した勉強会 / 読んだ技術書 / 見聞きした備忘録 を気ままに書いていきます

【Rails】ActiveAdmin

ActiveAdminをインストール

手順

①Gemfileに記入

gem 'devise'
gem 'activeadmin', github: 'activeadmin'

②プロジェクトにインストール

$ bundle install
$ rails g active_admin:install

③インストール時に出た警告を修正

config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config/routes.rb
root to: "home#index
app/views/layouts/application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
db/migrate/201501222120_devise_create_admin_users.rb
## コメントアウトする

## Recoverable
# t.string   :reset_password_token
# t.datetime :reset_password_sent_at

...

add_index :admin_users, :email,                unique: true
# add_index :admin_users, :reset_password_token, unique: true

...

マイグレーション

$ rake db:migrate

⑤モデルを作成

$ rails g model Article title:string content:text
$ rake db:migrate

⑥ActiveAdminで管理する

このコマンドをやらなければ、adminには表示されません。

$ rails g active_admin:resource Article

⑦ストロングパラメータの許可

app/admin/article.rb
ActiveAdmin.register Article do
  controller do
    def permitted_params
      params.permit article: [:title, :content]
    end
  end
end

⑧articleと1対多のモデルを新たに作成

$ rails g model Comment commenter:string body:text article:references
$ rake db:migrate
$ rails g active_admin:resource Comment

⑨ストロングパラメータの許可

  controller do
    def permitted_params
      params.permit comment: [:commenter, :body, :article_id]
    end
  end

※例外的に必要な処理

今回、モデルにcommentを作成したため、ActiveAdminで元々使用されているcommentと被ってしまった。以下のようなエラーが出てしまいました...

`raise_if_mismatched!': You're trying to register ActiveAdmin::Comment as Comment, but the existing ActiveAdmin::Resource config was built for Comment! (ActiveAdmin::ResourceCollection::ConfigMismatch)
config/initializers/active_admin.rb
config.comments_registration_name = 'AdminComment'

ここまでやれば一通り動かせると思います。
管理画面はRailsAdminと比較してどっちを使うか決める感じになりそうです。
久しぶりの投稿、、これからは継続して投稿していきたい...
Cocos2d-xを2月から触っていくことになったのでそっちも書いていきたいです。