【ActiveAdmin】rails g active_admin: resource model名によるモデルの管理画面作成


はじめまして。
オンラインのプログラミングスクールでRuby, Railsの学習を続けているYori-Goreng(ヨリゴレン)です
今回は、ActiveAdminを用いた管理画面作成の一部をご紹介します

環境

  • ruby 2.6.6
  • Rails 6.0.3.1
  • MacOS Catalina バージョン10.15.4

ActiveAdminとは?

ActiveAdminは、Ruby on Railsにおいて管理画面を生成するgemのことです。管理画面からは、データの作成や更新、削除などが容易に行えるようになります。
とても便利なので、使ってみない手はありません

説明文引用:Active Admin is a Ruby on Rails plugin for generating administration style interfaces. It abstracts common business application patterns to make it simple for developers to implement beautiful and elegant interfaces with very little effort.

ActiveAdmin インストール手順

  • Gemfileにactiveadmindeviseというgemを追加し、bundle installでgemをインストール。
gem 'activeadmin'
gem 'devise'
  • rails g active_admin:installを実行。以下のような文章がターミナルに表示されます。
 ===============================================================================

Some setup you must do manually if you haven't yet:

  1.Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4.You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================
  • rails g model model名により、管理画面で管理するモデルを作成。例として、rails g model textを実行。

  • モデルと同時に作成されたマイグレーションファイルを修正し、必要となるカラムを追加。

db/migrate/20200605042220_create_texts.rb
class CreateTexts < ActiveRecord::Migration[5.2]
  def change
    create_table :texts do |t|
   #今回は、title, contentという2つのカラムを追加してみます。
      t.string :title
      t.text  :content
      t.timestamps
    end
  end
end
  • rails db:migrateでマイグレート。

  • rails db:seedでデータベースにユーザーの初期データを投入。

  • rails sで、サーバーを起動。

  • http://localhost:3000/admin にアクセスし、ログイン画面を表示。

  • 以下のID、パスワードでログイン
UserID: [email protected]
Password: password
  • すると、ActiveAdminで作成した管理画面が表示されます。

rails g active_admin: resource model名

このコマンドにより、model名で指定したモデルの管理メニューを作成します。

今回は、先程作成したtextモデルの管理メニューを追加したいので、rails g active_admin:resource textを実行します。

そうすると、app/adminにtexts.rbが作成され、管理画面にはTextsのメニューが追加されます。この画面から、モデルのデータを更新したりできます。

ちなみに、texts.rbpermit_params :カラム名を追加しないと、データを更新できないようです。

app/admin/texts.rb
ActiveAdmin.register Text do
  permit_params :title, :content  
end

試しにデータを追加してみます。rails cでコンソールを立ち上げ、createアクションを実行します⇒モデル名.create(カラム名: "カラムの値")

rails c
Text.create(title: "1", content: "hogehoge")

無事に追加されていました。画面右端のView, Edit, Deleteでデータを簡単にいじることができます。

終わりに

ActiveAdminには他にも沢山の機能があるので、公式サイトや他のQiita記事をみてどんどん学んでみてください