Scaffoldで作成されたファイルの中身を確認する
Scaffold ツールを使用すると、アプリケーションの基本機能を実現するための必要なファイルが自動的に作成されます。ここでは Scaffold で作成されたファイルの中身を確認します。
(Last modified: )
Scaffoldコマンドで作成されたファイルの一覧
今回 Scaffold コマンドを実行して作成されたファイルの一覧は次の通りです。
invoke active_record create db/migrate/20240615005508_create_personals.rb create app/models/personal.rb invoke test_unit create test/models/personal_test.rb create test/fixtures/personals.yml invoke resource_route route resources :personals invoke scaffold_controller create app/controllers/personals_controller.rb invoke erb create app/views/personals create app/views/personals/index.html.erb create app/views/personals/edit.html.erb create app/views/personals/show.html.erb create app/views/personals/new.html.erb create app/views/personals/_form.html.erb create app/views/personals/_personal.html.erb invoke resource_route invoke test_unit create test/controllers/personals_controller_test.rb create test/system/personals_test.rb invoke helper create app/helpers/personals_helper.rb invoke test_unit invoke jbuilder create app/views/personals/index.json.jbuilder create app/views/personals/show.json.jbuilder create app/views/personals/_personal.json.jbuilder
作成されたファイルはテキストファイルですので、順番にどのようなファイルが作成されたのかを確認していきます。
モデルとマイグレーションファイル
作成されたファイルの中で、次の 2 つがモデルとマイグレーションファイルです。
db/migrate/20240615005508_create_personals.rb app/models/personal.rb
最初にモデルに関する app/models/personal.rb ファイルをテキストエディタで開いてみます。
class Personal < ApplicationRecord end
クラスの中身は何もありませんが、 ActiveRecord で定義されているメソッドをそのまま利用できるため、特に何も記述しなくてもデータの作成やデータの取得といった基本的な処理を行なうことができます。
次にマイグレーションファイルである db/migrate/20240615005508_create_personals.rb ファイルをテキストエディタで開いてみます。
class CreatePersonals < ActiveRecord::Migration[7.1] def change create_table :personals do |t| t.string :name t.string :address t.timestamps end end end
Scaffold コマンドを実行したときに引数に指定したカラム名とデータ型を元にファイルが作成されています。
このマイグレーションファイルを元にテーブルを作成してあります。
コントロールとアクション
次のファイルがコントロールに関して記述されたファイルです。
app/controllers/personals_controller.rb
コントロールに関する app/controllers/personals_controller.rb ファイルをテキストエディタで開いてみます。
class PersonalsController < ApplicationController before_action :set_personal, only: %i[ show edit update destroy ] # GET /personals or /personals.json def index @personals = Personal.all end # GET /personals/1 or /personals/1.json def show end # GET /personals/new def new @personal = Personal.new end # GET /personals/1/edit def edit end # POST /personals or /personals.json def create @personal = Personal.new(personal_params) respond_to do |format| if @personal.save format.html { redirect_to personal_url(@personal), notice: "Personal was successfully created." } format.json { render :show, status: :created, location: @personal } else format.html { render :new, status: :unprocessable_entity } format.json { render json: @personal.errors, status: :unprocessable_entity } end end end # PATCH/PUT /personals/1 or /personals/1.json def update respond_to do |format| if @personal.update(personal_params) format.html { redirect_to personal_url(@personal), notice: "Personal was successfully updated." } format.json { render :show, status: :ok, location: @personal } else format.html { render :edit, status: :unprocessable_entity } format.json { render json: @personal.errors, status: :unprocessable_entity } end end end # DELETE /personals/1 or /personals/1.json def destroy @personal.destroy! respond_to do |format| format.html { redirect_to personals_url, notice: "Personal was successfully destroyed." } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_personal @personal = Personal.find(params[:id]) end # Only allow a list of trusted parameters through. def personal_params params.require(:personal).permit(:name, :address) end end
コントロールの中には「index」「show」「new」「edit」「create」「update」「destroy」のアクションメソッドが自動的に定義されています。これらのアクションを呼び出すことでデータの追加や取得を行なうことができます。
ビュー
次のファイルがビューに関して記述されたファイルです。
create app/views/personals/index.html.erb create app/views/personals/edit.html.erb create app/views/personals/show.html.erb create app/views/personals/new.html.erb create app/views/personals/_form.html.erb create app/views/personals/_personal.html.erb
この中の app/views/personals/new.html.erb ファイルをテキストエディタで開いてみます。
<h1>New personal</h1> <%= render "form", personal: @personal %> <br> <div> <%= link_to "Back to personals", personals_path %> </div>
「render 'form'」の部分で「_form.html.erb」を読み込んでいます。
次に app/views/personals/edit.html.erb ファイルをテキストエディタで開いてみます。
次に「edit.html.erb」ファイルをテキストエディタで開いてみます。
<h1>Editing personal</h1> <%= render "form", personal: @personal %> <br> <div> <%= link_to "Show this personal", @personal %> | <%= link_to "Back to personals", personals_path %> </div>
こちらのファイルでも同じように「render 'form'」の部分で「_form.html.erb」を読み込んでいます。
この「_form.html.erb」はデータを新規に登録したり既存のデータを更新するためのフォームを表示するものです。フォームの部分は共通しているため、別のファイルとして作成しておき、「new.html.erb」ファイル及び「edit.html.erb」ファイルから読み込んでいます。
Scaffold コマンドを実行した時に作成される主なファイルについて見てみました。コントロールやアクション、ビュー、モデルなどが一通り作成されており、これだけでデータの追加や閲覧といった基本的な機能を持つアプリケーションが作成されています。
-- --
Scaffold で作成されたファイルの中身を確認しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。