【Rails】rails generate（rails g）コマンド一覧

# はじめに

rails generateをするときに、どんなファイルが作成されるのかなど毎回調べてしまっていたため、主に使っているものを自分でまとめます。

※rails generateは全て、rails g と省略します。

## 自動作成されるファイルまとめ

| コマンド名 | コントローラ | ビュー | モデル | マイグレーション | アセット | ルート | テスト | ヘルパー |
|:--|:--|:--|:--|:--|:--|:--|:--|:--|
| model | × | × | ○ | ○ | × | × | ○ | × |
| controller | ○ | ○ | × | × | ○ | ○ | ○ | ○ |
| scaffold | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| scaffold_controller | ○ | ○ | × | × | × | × | ○ | ○ |
| migration | × | × | × | ○ | × | × | × | × |

# コマンド一覧

## rails g model

[モデルの作成]

```rb
$ rails g model User name:string
```
Userモデルを作成し、nameカラムをstring型で追加します。
マイグレーションファイルも作成されるので、後からでもカラム等の編集は可能です。

[作成されるファイル]

```rb
invoke  active_record
      create    db/migrate/yyyymmddhhmmss_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
```


## rails g controller

[コントローラーの作成]

```rb
$ rails g controller Users home
```
Usersコントローラーを作成し、homeアクションを追加します。
作成されたコントローラーから、アクションの編集は可能です。
編集した場合、ルーティングは必ず設定します。

[作成されるファイル]

```rb
create  app/controllers/users_controller.rb
       route  get 'users/home'
      invoke  erb
      create    app/views/users
      create    app/views/users/home.html.erb
      invoke  test_unit
      create    test/controllers/users_controller_test.rb
      invoke  helper
      create    app/helpers/users_helper.rb
      invoke    test_unit
```

## rails g scaffold

[モデルの作成（scaffold）]

```rb
$ rails g scaffold User name:string
```
Userモデルを作成し、nameカラムをstring型で追加します。

[作成されるファイル]

```rb
invoke  active_record
      create    db/migrate/yyyymmddhhmmss_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      create      app/views/users/_user.html.erb
      invoke    resource_route
      invoke    test_unit
      create      test/controllers/users_controller_test.rb
      create      test/system/users_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      create      app/views/users/_user.json.jbuilder
```


## rails g scaffold_controller

[コントローラーの作成（scaffold）]

```rb
$ rails g scaffold_controller User home
```

Usersコントローラーを作成し、homeアクションを追加します。

[作成されるファイル]

```rb
create  app/controllers/users_controller.rb
      invoke  erb
      create    app/views/users
      create    app/views/users/index.html.erb
      create    app/views/users/edit.html.erb
      create    app/views/users/show.html.erb
      create    app/views/users/new.html.erb
      create    app/views/users/_form.html.erb
      create    app/views/users/_user.html.erb
      invoke  resource_route
       route    resources :users
      invoke  test_unit
      create    test/controllers/users_controller_test.rb
      create    test/system/users_test.rb
      invoke  helper
      create    app/helpers/users_helper.rb
      invoke    test_unit
      invoke  jbuilder
      create    app/views/users/index.json.jbuilder
      create    app/views/users/show.json.jbuilder
      create    app/views/users/_user.json.jbuilder
```


## rails g migration

[マイグレーションファイルの作成]

```rb
$ rails g migration add_column_to_User
```

add_column_to_User という部分はマイグレーションファイル名を表します。
何を記載しても問題ありませんが、行いたいことを記載すると分かりやすいです。

[作成されるファイル]

```rb
invoke  active_record
      create    db/migrate/yyyymmddhhmmss_add_column_to_user.rb
```


## rails destroy

[作成したものを削除]

```rb
$ rails destroy User
```
Userモデルを削除します。
controllerでもscaffoldでも使用できます。

#終わりに
migrationファイルの中身も、書き方がわからなくなることが多いので、
別でまとめようと思います。


お読みいただき、ありがとうございました！