質問アプリの作成!
デザインは考慮しないものとする。
できること
・質問の投稿
・質問の編集
・質問の更新
・質問の削除
開発環境
・クラウドサービス(codespaces)
・Rudy 3.0.2
・rails7
アプリ新規作成
rails new qanda_7.0.0
作成したフォルダに移動
cd qanda_7.0.0
questionsコントローラーの作成
rails g controller questions
先にアクションの定義を記述
class QuestionsController < ApplicationController
#質問一覧表示
def index
end
#質問詳細ページ表示
def show
end
#質問の作成
def new
end
#質問の登録
def create
end
#質問の編集
def edit
end
#質問の更新
def update
end
#質問の削除
def destroy
end
end
rails g model でMVCのMにあたるモデルを作成(単数系)
rails g model Question name:string title:string content:text
ー** Qustionモデルのデータ内容 ** ー
カラム 説明
id・・・・・・id
name・・・・・質問投稿者名
title・・・・・質問タイトル
content・・・・質問本文
created_at・・・作成日時
updated_at・・・更新日時
ー** 作成されたファイル **ー
・app > models > question.rb
・db > migrate > 20241001101402_create_questions
20241001101402_create_questionsの内容に問題ないことを確認して
rails db:migrate
さらに、テーブルが作成されたか確認する
rails dbconsole
コンソール返答文
SQLite version 3.45.3 2024-04-15 13:34:05
Enter ".help" for usage hints.
sqlite>
が返ってきたら、さらにコンソールで下記を入力。
.tables
コンソール返答文
ar_internal_metadata questions schema_migrations
questionsと書かれている。すきーまも確認
.schema questions
コンソール返答文
CREATE TABLE IF NOT EXISTS "questions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "title" varchar, "content" text, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
ここでは、最初に命令したstring型ではなく、 "name" varchar, "title" varchar,と変更されていたことがわかります。これはrailsの判断で適した型に変更してくれる仕様のため、こうなっているので事実上問題はありませんでした。
次に進みます。モードを抜け出して終わります。
.q
ルーティングの設定
ルーティングとは・・・URLとアクションを結びつける設定のことです。
早速、questions周りのCRUDで使うルーティングを自動生成することができる。
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Defines the root path route ("/")
# root "articles#index"
resources :questions
end
ー** 生成されたROUTES **ー
questions GET /questions(.:format) questions#index
POST /questions(.:format) questions#create
new_question GET /questions/new(.:format) questions#new
edit_question GET /questions/:id/edit(.:format) questions#edit
question GET /questions/:id(.:format) questions#show
PATCH /questions/:id(.:format) questions#update
PUT /questions/:id(.:format) questions#update
DELETE /questions/:id(.:format) questions#destroy