以下のControllerファイルで役割の内容をコメントアウトしているので 復習で載せておく。
boards_controller.rb
class BoardsController < ApplicationController
def index
# Boardの一覧画面では、全ての掲示板情報を一覧で表示したい。
@boards = Board.all
end
def new
# Boardの新規作成画面では、Boardの空インスタンスをViewに渡したい。
@board = Board.new
end
def show
# Boardの詳細画面では、URLパラメーターから取得したBoardのインスタンスが必要
@board = Board.find(params[:id])
end
def edit
# Boardの詳細画面では、URLパラメーターから取得したBoardのインスタンスが必要
@board = Board.find(params[:id])
end
def create
# POSTリクエストのボディからパラメーターを取得して、Boardのインスタンスを作成したい
@board = Board.new(board_params)
#ActiveRecordのsaveメソッドを実行して、結果によって処理を分岐させたい
if @board.save
# 処理が成功の場合、リダイレクトでshowアクションを実行させたい
redirect_to @board, notice: '掲示板が作成されました。'
else
# 処理が失敗の場合、@boardの内容を踏まえてnewテンプレートを表示させたい
render :new
end
end
def update
# 編集対象のBoardインスタンスが必要
@board = Board.find(params[:id])
# ActiveRecordのupdateメソッドを実行して、結果によって処理を分岐させたい
if @board.update(board.params)
# 処理が成功した場合、リダイレクトでshowアクションを実行させたい
redirect_to @board, notice: 'Board was successfully updated.'
else
# 処理が失敗の場合、@boardの内容を踏まえてeditテンプレートを表示させたい
render :edit
end
end
def destroy
# 削除対象のBoardインスタンスが必要
@board = Board.find(params[:id])
# ActiveRecordのdestroyメソッドを実行
@board.destroy
# 処理が完了した後はリダイレクトでindexアクションを実行させたい
redirect_to boards_url, notice: 'Board was successfully destroyed.'
end
private
# Boardのパラメータ取得用にストロングパラメータを使ってメソッドを定義
def board_params
params.require(:board).permit(:title, :body)
end
end
post.rb
validates :body, length: { minimum: 5, maximum: 140 }
# これで5文字以上、140文字以下で字数制限をしている。
NOT NULL制約rails generate migration ChangeColumnOnモデル名カラム名で作成
新規作成したmigrationファイル
def change
change_column_null :posts, :title, false
change_column_null :posts, :body, false
end
rails db:migrateで変更内容を反映する。
ここは分かるので省略。ざっくりいうと「null:false」の方法でやる。
ただしmigrationファイルを変更しただけではデータベースに変更は行われないので
rails db:migrate:resetを実行することを忘れない。