バリデーションを追加しエラーメッセージを表示させたい。
attendance.rbというモデルにバリデーションを追加させたいのですが、カラムのモデルが違うためエラーが出ます。
Userクラスが持っているカラム: finish_work_time(指定勤務時間)
Attendanceクラスが持っているカラム: finish_schedule_time(終了予定時間)
これをattendance.rbに記述したい
バリデーションの具体的な内容は
・finish_schedule_time(終了予定時間) よりも finish_work_time(指定勤務時間)が早いものは無効
貴重なお時間をとらせてしまい申し訳ありません。
お忙しいと思いますが何かアドバイス頂けないでしょうか、、汗
発生している問題・エラーメッセージ
NameError in AttendancesController#update_overtime undefined local variable or method `finish_work_time' for #<Attendance:0x00007fbc674d8c78> Did you mean? finished_at
該当のソースコード
class Attendance < ApplicationRecord def finish_schedule_time_test errors.add(:finish_work_time, "より早い終了予定時間は無効です") if finish_schedule_time < finish_work_time end
試したこと
undefined local variable or method `finish_work_time
以上のようなエラー内容からfinish_work_timeというメソッドが見つからないとされているのでUserクラスから無理やり引っ張ってきたのですが
undefined local variable or method `params' というエラーが発生した為出来ませんでした。
def finish_schedule_time_test
_ user = User.find(params[:user_id])errors.add(:finish_work_time, "より早い終了予定時間は無効です") if finish_schedule_time < user.finish_work_time
end
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー