3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails scaffoldとは何か?

Last updated at Posted at 2023-04-16

はじめに

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つのレコードを表すオブジェクトになり、テーブルのカラムに相当する属性を持つ

例えば、商品情報のモデルクラスがあると、そのインスタンス(オブジェクト)は「商品名」や「価格」などの属性を持つ
スクリーンショット 2023-04-16 17.30.32.png

モデルの命名規則

モデルのクラス名は頭が大文字の単数形

コントローラーファイル

モデルとビューを制御するために使われる、以下のファイルが生成される

  • app/controllers/users_controller.rb

中身は以下の様になっている

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

以下のファイルが生成される

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をシンプル書くことが出来る機能

app/helpers/users_helper.rb
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の使い方を完全理解|何が起こっているかを徹底解説

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?