アプリにActive Adminを入れたので、手順を備忘録として書いてます。
gemのインストール
gem 'activeadmin'
$bundle install
generator を実行して ActiveAdmin に必要なファイルを生成
$rails g active_admin:install
上記コマンドで必要なファイルが生成される。
generator で migration ファイルも作成されたので migration を実行
$rails db:migrate
これで、seeds.rb
に初期データとして、ログイン用の(admin)ユーザが作成されている。下記の感じで。
AdminUser.create!(email: 'admin@example.com', password: 'password', password_confirmation: 'password') if Rails.env.development?
なので、実行してadminuserを作ります。
$rails db:seed
ログイン機能付きの管理画面を確認できる
サーバーを再起動してから http://localhost:3000/admin
にアクセスするとログイン画面が表示されるので、先ほど初期データとして投入した下記のユーザ情報でログインできる。
モデルに対する管理ページを作成
Userモデル
$rails g active_admin:resource
コマンドにモデル名を渡すことにより、そのモデルに対する管理ページを作成することができる。
下記のようにして User モデルの管理ページを作成
$ rails g active_admin:resource User
これでapp/admin/users.rb
が作成され、画面の上部にも表示される。
しかし、このまま User を新規作成しようとすると ActiveModel::ForbiddenAttributesError が出る。
これを解決するには先ほど作成された app/admin/users.rb
に permit_params を追加する必要があります。
これは Rails のストロングパラメータのように、許可したいパラメータのみを記述するメソッドです。
許可したいパラメータは name ,email だけなので、permit_params に name, email を追加します。
ActiveAdmin.register User do
permit_params :name, :email
end
こうすることで、Userを新規作成することができるようになります。
Messageモデル
user同様にmessageを管理できるように、下記コマンド。
rails g active_admin:resource Message
パラメータの許可を追記。
ActiveAdmin.register Message do
permit_params :user_id :title, :content
end
検索をかけられる
右側に検索フォームがあり、条件を指定して抽出することができます。
Userのセレクトボックスにmessagesのフィルターが確認できるかと思います。
これはuserモデルとmessageモデルにでhas_manyとbelongs_toの関連性を定義してあるからです。
逆にMessageのセレクトボックスにも、userをフィルターにかけて検索することができます。