class CouponExpirationValidator < ActiveModel::Validator ## # @param record {Coupon} ## def validate(record) previous = record.valid_until_was current = record.valid_until unless current.blank? if current.end_of_day < DateTime.current record.errors[:valid_until] << I18n.t('errors.messages.cannot_be_in_the_past') end if !previous.blank? and current.end_of_day < previous.end_of_day record.errors[:valid_until] << I18n.t('errors.messages.cannot_be_before_previous_value') end end end end