Scaffoldを自分なりに解説してみる

##Scaffoldとは
ざっくり言うと、Railsに備わっているアプリケーションの雛形を作成することができる機能のこと。読み方はスキャフォールド。日本語に訳すと(建築現場などの)足場。

・create(新規作成)
・read(読み出し)
・update(更新)
・destroy(削除)

以上の４つのWebアプリケーションの基本となる機能を追加してくれます。頭文字をとってCRUDとも呼ばれているみたいです。
```rails generate scaffold モデル名 カラム名:データ型```のように使います。



```terminal
$ rails generate scaffold User name:string email:string
      invoke  active_record
      create    db/migrate/20160515001017_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
      invoke    test_unit
      create      test/controllers/users_controller_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
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.coffee
      invoke    scss
      create      app/assets/stylesheets/users.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss
```

追加されるディレクトリ名や文字などはscaffoldで指定したモデル名の複数形になります。

##作成されたファイル
上のコード例で追加されたファイルを見ていきます。

**・モデル、データベース**

```terminal
      create    db/migrate/20160515001017_create_users.rb
      create    app/models/user.rb
```

モデルとマイグレーションファイルを作成しています。モデルはデータベースとのやりとりを取り扱う機能を実装します。

**・テスト**

```terminal
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      create test/controllers/users_controller_test.rb
```
上から順に
・モデルのテスト環境用のテスト処理ファイル
・test用サンプルデータ
・コントローラのtest環境用のテスト処理ファイル

**・コントローラ**

```terminal
      create    app/controllers/users_controller.rb
```
ブラウザとview、モデルの仲介役ことコントローラの作成。

**・ビュー**

```terminal
      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
```
「_form.html.erb」ファイルは他のビューから読み込まれるもので、複数のビューファイルで使われている部分をまとめています。

**・ヘルパー**

```terminal
      create     app/helpers/users_helper.rb
```
ヘルパーとはViewをよりシンプルに書くためのモジュール。Viewでの共通する処理をメソッドとして定義します。繰り返し記述するような処理を簡略化でき、メンテナンス性も向上します。
**・SCSS**

```
      create    app/assets/stylesheets/scaffolds.scss
```
表示画面のスタイルを設定するCSSがまとまっているファイル。

**・その他**

```terminal
      create    app/views/users/index.json.jbuilder
      create    app/views/users/show.json.jbuilder
      create    app/views/users/_user.json.jbuilder
      create    app/assets/javascripts/users.coffee
      create    app/assets/stylesheets/users.scss
```
Javascript系のファイル。これらのファイル「は基本的に変更することはあまりないかもしれないとのこと。

##最後に
今回はscaffoldについての説明とどんなファイルが生成されるのかを見ました。rails db:migrateを忘れずに。