質問アプリの作成　＃１

# 質問アプリの作成！
デザインは考慮しないものとする。

## できること
・質問の投稿
・質問の編集
・質問の更新
・質問の削除

## 開発環境
・クラウドサービス（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