はじめに
Ruby on Railsのscaffoldについて理解を深める為にまとめてみました
Rails scaffoldとは
scaffoldとは、Railsに備わっているコマンドの1つで以下のものを自動作成してくれる
- Routing
- Controller
- View
- Model
- Table(Database)の記述
- その他ファイル等
scaffoldを使って作成されるルーティング
Railsが定める以下の7つのアクションが作成される
index
show
new
edit
create
update
destroy
使い方
Railsプロジェクトのあるディレクトリにて下記コマンドを実行する
rails g scaffold モデル名 カラム名①:データの型① カラム名②:データの型②・・・
# scaffoldコマンドの例
# Userモデル nameカラム:文字型, emailカラム:文字型
rails g scaffold User name:string email:string
生成されるファイル
マイグレーションファイル
テーブル操作に欠かせないファイル
テーブルの作成や削除、カラムの追加・変更などを行うことができる。
生成されるファイル名にはタイムスタンプが付与される
db/migrate/[タイムスタンプ]_create_user.rb
テーブル作成
マイグレーションファイルを使用してテーブルを作成する場合、下記のコマンドを実行する
rails db:migrate
このコマンドを実行することでマイグレーションファイルの内容をデータベースに反映させることができる
今回で言うと以下のテーブルが作成される
モデル
モデルはMVCの中のMに該当する部分、以下のファイルが生成される
app/models/user.rb
モデルとは
データベースのテーブルに対応するRubyのクラスです。
モデルクラスのインスタンスは、1つのレコードを表すオブジェクトになり、テーブルのカラムに相当する属性を持つ
例えば、商品情報のモデルクラスがあると、そのインスタンス(オブジェクト)は「商品名」や「価格」などの属性を持つ
モデルの命名規則
モデルのクラス名は頭が大文字の単数形
コントローラーファイル
モデルとビューを制御するために使われる、以下のファイルが生成される
app/controllers/users_controller.rb
中身は以下の様になっている
class UsersController < ApplicationController
def index
# 処理を記述
end
def show
# 処理を記述
end
def new
# 処理を記述
end
def edit
# 処理を記述
end
def create
# 処理を記述
end
def update
# 処理を記述
end
def destroy
# 処理を記述
end
end
ルーティング
クライアントサイドからのリクエストに対してコントローラーで設定したアクションと結びつける働きをする
config/routes.rb
以下のファイルが生成される
Rails.application.routes.draw do
get 'users/sign_in'
get 'users/sign_up'
get 'pages/top'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
ビュー
表示と入力を制御する
以下の5つのファイルが生成される
index
app/views/users/index.html.erb
edit
app/views/users/edit.html.erb
show
app/views/users/show.html.erb
new
app/views/users/new.html.erb
form
app/views/users/_form.html.erb
ヘルパー
app/helpers
配下に、users_helper.rb
というファイルが生成される
デフォルトでは中身は何も記述されていない
※ヘルパーとはRailsのViewをシンプル書くことが出来る機能
module UsersHelper
end
アセット(Sassファイル)
スタイルを制御するscssファイル
app/assets/stylesheets/
配下に以下の2つのファイルが生成される
app/assets/stylesheets/<コントローラ名>.scss
app/assets/stylesheets/scaffolds.scss
app/assets/stylesheets/<コントローラ名>.scss
に記述した内容はapplication.css
に統合されるので全体に適用される
scaffoldのオプションでscssファイルを生成しないようにする
rails g scaffold
実行時に--no-scaffold-stylesheets
オプションをつけることで生成しないようすることが出来る
jbuilderファイル
jbuilderファイルはJSON形式のデータを生成するためのファイル
以下の3つのファイルが生成される
app/views/users/index.json.jbuilder
app/views/users/show.json.jbuilder
app/views/users/_user.json.jbuilder
テスト用ファイル
以下の4つのテストファイルが生成される
-
test/models/users_test.rb
→ モデルテスト -
test/fixtures/users.yml
→ フィクスチャテスト -
test/controllers/users_controller_test.rb
→ コントローラテスト -
test/system/users_test.rb
→ システムテスト
参考記事
Rails scaffoldを初心者向けに解説!実際にアプリを作ってみよう!
Rails scaffoldの使い方とメリット・デメリット【初心者向け】
【Rails入門】データベースを設定するrails db:migrateを説明!
【Rails】 マイグレーションファイルを徹底解説!
Railsのmodelを徹底解説!知っておくべき3つの知識も紹介
【Rails】超便利コマンドscaffoldの使い方を完全理解|何が起こっているかを徹底解説