1
0

More than 1 year has passed since last update.

Ruby on Rails タスクモデルを作成する

Posted at

タスクモデルのひな形を作成する

・モデル作成のための便利なジェネレータを使う

ターミナル
#bin/rails g model [モデル名] [属性名:データ型 属性名:データ型 …] [オプション]
$ bin/rails g model Task name:srtring description:text

コマンドを実行すると、モデルのクラスファイル、マイグレーションファイル、モデルの自動テストのファイルのひな形が自動作成される、

生成されるものの種類 本筋でのファイルパス 用途
モデルクラスのソースコード app/models/task.rb Taskクラスの実装
マイグレーションファイル db/migrate/20210825131759_create_tass.rb データベースにtasksテーブルを追加する
モデルの自動テスト test/models/task_test.rb Taskクラスについての自動テストの実装
モデルの自動テストで使うfixtureファイル test/fixtures/tasks.yml Taskクラスについての自動テストのためのデータ投入の定義

データベースにテーブルを追加する

・データベースにテーブルを追加するには、Railsの用意しているマイグレーションという仕組みを使う。
・generatorでTaskモデルを作成した際に作成されたdb/migrate/xxxxxxxxxxxxxx_create_tasks.rbは必要最低限の要件を満たしているので、このままマイグレーションを実行して、データベースにtasksテーブルを追加する。

db/migrate/xxxxxxxxxxxxxx_create_tasks.rb
class CreateTasks < ActiveRecord::Migration[5.2]
  def change
    create_table :tasks do |t| →#tasksというテーブルを作る
      t.string :name →#tasksというテーブルがnameのカラムを備えること
      t.text :description →#tasksというテーブルがdescritionのカラムを備えること

      t.timestamps →#打刻ようのカラムを持つこと 
    end
  end
end
ターミナル
#データベースにtaskテーブルを追加
% bin/rails db migrate
app/models/task.rb
#このファイルはクラスを定義している
class Task < ApplicationRecord
end

コントローラーとビュー

コントローラやビューのひな形もジェネレータで作成することができる

ターミナル
#コントローラを作成する書式→bin/rails g controller コントローラー名 [アクション名 アクション名 …] [オプション]
$ bin/rails g controller tasks index show new edit

・アプリケーションは、URLとHTTPメソッドの組み合わせから、リクエストを処理すべきコントローラーとアクションを特定して(※この特定処理を「ルーティング」と呼ぶ)、特定したアクションに処理をさせ、結果のHTTPレスポンスを作ってプラウ座に返す。


URLとHTTPメソッド

①リクエストを処理するコントローラとアクションは、ブラウザからのリクエストに含まれるURLとHTTPメソッドによって決定される。
②コントローラのアクションを設計する際には、入り口となるURLとHTTPメソッドを合わせて考える必要がある。


・controllerジェネレータでアクションを指定すると、アクションと同名のビューも一緒に作ってくれます。
・HTTPメソッドがGETのアクションは同名のビューを使うことが多いので、HTTPメソッドがGETとなるアクション名をジェネレータコマンドの引数として指定するのが効率的。
・controllerジェネレータコマンドを実行すると「index」「show」「new」「edit」のアクションについて個別のルーティングを追加する。
・CRUDというよくあるパターンは、パターン通りのルーティングを一括で設定したいので、config/routes.rbから4つのアクションについての設定を消す。

config/routes.rb

#ここから消す
get 'tasks/index'
get 'tasks/show'
get 'tasks/new'
get 'tasks/edit'
#ここまで

#代わりに「resouces」メソッドを追加
resouces :tasks
#resourcesメソッドは(index,show,new,create,edit,update,destroy)に関するルーティングを一括で設定してくれる。

・アプリケーションの玄関口(ルートパス)にアクセスした時に、Railsのデフォルト画面ではなくタスク一覧が表示されるようにする

config/routes.rb
#追加
root to: 'tasks#index'

追加した結果のroutes.rb

config/routes.rb

Rails.application.routes.draw do
  root to: 'tasks#index' 
  resources :tasks
end
1
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
1
0