【Rails】scaffoldコマンドの使い方と処理内容まとめ

Rails on Railsの超便利コマンド`scaffold`は具体的にどんな処理をしているかについて。

##scaffoldとは？
スッキャフォルドといい、足場の意味。Railsでアプリケーションに必要なファイル（足場）を全部自動生成してくれる。

作成するのは、一覧(index)、詳細(show)、新規作成(new/create)、編集(edit/update)、削除(destroy)するために必要なコントローラ、モデル、ビューなど。

scaffold後は、足場の上に自分でプログラムを組んでいけばいい。


<br>
##scaffoldの使い方

・`$ rails g scaffold モデル名 [カラム名:型]`

- 「g」は「generate」の略 
- モデル名はパスカルケース（冒頭大文字）単数形
- カラムを複数作る場合は、スペースでつなげる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/56bb1341-b35a-381c-1b14-ce5d9038df3c.png)

<br>
##実例

```
$ rails g scaffold Tweeet tweeet:text
Running via Spring preloader in process 4375
      invoke  active_record
      create    db/migrate/20210319063511_create_tweeets.rb
      create    app/models/tweeet.rb
      invoke    test_unit
      create      test/models/tweeet_test.rb
      create      test/fixtures/tweeets.yml
      invoke  resource_route
       route    resources :tweeets
      invoke  scaffold_controller
      create    app/controllers/tweeets_controller.rb
      invoke    erb
      create      app/views/tweeets
      create      app/views/tweeets/index.html.erb
      create      app/views/tweeets/edit.html.erb
      create      app/views/tweeets/show.html.erb
      create      app/views/tweeets/new.html.erb
      create      app/views/tweeets/_form.html.erb
      invoke    resource_route
      invoke    test_unit
      create      test/controllers/tweeets_controller_test.rb
      create      test/system/tweeets_test.rb
      invoke    helper
      create      app/helpers/tweeets_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/tweeets/index.json.jbuilder
      create      app/views/tweeets/show.json.jbuilder
      create      app/views/tweeets/_tweeet.json.jbuilder
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/tweeets.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss
```

**▼指定できるカラム型**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/3bbf0b65-28ca-0135-abc4-14f1b4115cf6.png)



<br>
###作成されたファイル
約20のファイルが生成/編集される。

```
#scss
new file:   app/assets/stylesheets/scaffolds.scss
new file:   app/assets/stylesheets/tweeets.scss

#CRUD操作
new file:   app/controllers/tweeets_controller.rb
new file:   app/helpers/tweeets_helper.rb
new file:   app/models/tweeet.rb
new file:   app/views/tweeets/_form.html.erb
new file:   app/views/tweeets/_tweeet.json.jbuilder
new file:   app/views/tweeets/edit.html.erb
new file:   app/views/tweeets/index.html.erb
new file:   app/views/tweeets/index.json.jbuilder
new file:   app/views/tweeets/new.html.erb
new file:   app/views/tweeets/show.html.erb
new file:   app/views/tweeets/show.json.jbuilder

＃ルーティング
modified:   config/routes.rb

#マイグレーションファイル
new file:   db/migrate/20210319063511_create_tweeets.rb

#テスト用
new file:   test/controllers/tweeets_controller_test.rb
new file:   test/fixtures/tweeets.yml
new file:   test/models/tweeet_test.rb
new file:   test/system/tweeets_test.rb
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/cc8e43e1-5e30-f516-9727-345484ecb1d8.png)



＞https://railsdoc.com/page/rails_scaffold