実現したいこと
スケジュールの終了時間(finish_datetime)が開始時間(start_datetime)より早い時間を設定した場合と開始時間が現在時刻より早い時間を設定した場合に任意のエラーメッセージを表示したい。
発生している問題
Railsでスケジュール管理アプリを作成しております。
現状、スケジュールの終了時間(finish_datetime)が開始時間(start_datetime)より早い時間を設定した場合、schedule.rbで記述しているエラーメッセージが表示されずschedules_comtroller.rbに記述したエラーメッセージが表示されてしまいます。開始時間が現在時刻より早い時間を設定した場合はスケジューryが登録できてしまいます。
こちらschedule.rbに記載したエラーメッセージを表示させるにはどちらを修正するべきなのでしょうか?
該当のソースコード
schedulelist/app/models/schedule.rb
1class Schedule < ApplicationRecord 2 belongs_to :user 3 4 validates :content, presence: true, length: { maximum: 255 } 5 validates :start_datetime, presence: true 6 validates :finish_datetime, presence: true 7 validate :start_finish_check 8 validate :start_check 9 10 def start_finish_check 11 errors.add(:finish_datetime, "は開始時刻より遅い時間を選択してください") if self.start_datetime > self.finish_datetime 12 end 13 14 def start_check 15 errors.add(:start_datetime, "は現在の日時より遅い時間を選択してください") if self.start_datetime < Time.now 16 end 17end
schedulelist/app/controllers/schedules_controller.rb
1class SchedulesController < ApplicationController 2 before_action :require_user_logged_in 3 4 def create 5 @schedule = current_user.schedules.build(schedule_params) 6 if @schedule.save 7 flash[:success] = 'スケジュールを登録しました。' 8 redirect_to root_url 9 else 10 @pagy, @schedules = pagy(current_user.schedules.order(id: :desc)) 11 flash.now[:danger] = 'スケジュールの登録に失敗しました。' 12 render 'toppages/index' 13 end 14 end 15 16 def destroy 17 @schedule = Schedule.find(params[:id]) 18 19 @schedule.destroy 20 flash[:success] = 'スケジュールを削除しました。' 21 redirect_to root_url 22 end 23 24 def edit 25 @schedule = Schedule.find(params[:id]) 26 end 27 28 def update 29 @schedule = Schedule.find(params[:id]) 30 31 if @schedule.update(schedule_params) 32 flash[:success] = 'スケジュールは正常に更新されました' 33 redirect_to root_url 34 else 35 flash.now[:danger] = 'スケジュールは更新されませんでした' 36 render :edit 37 end 38 end 39 40 private 41 42 def schedule_params 43 params.require(:schedule).permit(:content, :start_datetime, :finish_datetime) 44 end 45end
補足情報(FW/ツールのバージョンなど)
記載しているファイルが不十分な場合、お申し付けください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/15 11:07
2023/08/15 11:30
2023/08/15 13:41
2023/08/15 23:34