ActiveRecordで固定の日時最小値チェックのバリデーションを入れる
# # app/models/concerns/my_app/extend_validation.rb # 複数のフィールドに対して一括でバリデーション設定できるようにするために # バリデーションメソッドを追加するモジュール # module MyApp module ExtendValidation extend ActiveSupport::Concern module ClassMethods def validates_min_datetime_gteq(*args) options = args.extract_options! args.each do |key| validates key, min_datetime: (options.present? ? options : true) end end end end end # # app/validators/min_datetime_validator.rb # class MinDatetimeValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) if value.present? && value < Time.zone.parse(Settings.validation.min_datetime) record.errors[attribute] << ( options[:message] || I18n.t('errors.messages.on_or_after', {restriction: Settings.validation.min_datetime}) ) end end end
参考にさせていただきました。
www.techscore.com