概要
AとBの日付の差がn日以上ある場合、
エラーになるようValidationを作成する。
例:AとBの日付の差が10日以上ある場合、エラーになる。
例1:
A(4/1)
B(4/16)
→15日差分がある。
→エラー。
例2:
A(12/30)
B(12/21)
→9日差分がある。
→OK
日付の差分を求める
下記の書き方で日付の差分を求めてみた。
hogehoge_on = "2022/04/01".to_date
piyopiyo_on = "2022/04/08".to_date
# hogehoge_on からpiyopiyo_onまでの日付の差
(hogehoge_on - piyopiyo_on).to_i.abs
# => 7
# ※to_iを入れないとよくわからない結果が出力される。
(piyopiyo_on - hogehoge_on)
# => 7/1
参考:
Validateを作成する。
models/hogehoge.rb
class HogeHoge < ApplicationRecord
validate :check_date_diff
private
def check_date_diff
# hogehoge_onとpiyopiyo_onのどちらか空の時はバリデーションを実行しない
return true if (self.hogehoge_on.blank? || self.piyopiyo_on.blank?)
if (self.hogehoge_on - self.piyopiyo_on).to_i.abs > 9
errors.add(:base, "hogehoge日とpiyopiyo日の差分は9日以内でお願いします")
end
end
end