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

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

#環境
- ruby 2.6.6
- Rails 6.0.3.1
- MacOS Catalina バージョン10.15.4

#ActiveAdminとは？

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

- [ActiveAdmin サイト](https://activeadmin.info/)

>説明文引用：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に`activeadmin`と`devise`という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 にアクセスし、ログイン画面を表示。

<img width="585" alt="スクリーンショット 2020-06-05 12.55.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364582/37ac0748-9c7d-3aca-2a7d-e33294a1bcd7.png">

- 以下のID、パスワードでログイン

```
UserID: admin@example.com
Password: password
```

- すると、ActiveAdminで作成した管理画面が表示されます。

<img width="1095" alt="スクリーンショット 2020-06-05 17.34.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364582/07036777-d0be-ad89-45d5-ad9b07bfe1a6.png">


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

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

そうすると、app/adminに`texts.rb`が作成され、管理画面にはTextsのメニューが追加されます。この画面から、モデルのデータを更新したりできます。
<img width="376" alt="スクリーンショット 2020-06-05 13.57.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364582/f6c0b01a-8fef-5bfa-e767-08dd3fe8b276.png">

ちなみに、`texts.rb`に`permit_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でデータを簡単にいじることができます。
<img width="1353" alt="スクリーンショット 2020-06-05 18.02.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364582/c1b618b0-1414-99e6-607a-9a7d709b1815.png">

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