3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/reform/form/active_model/acceptance_validator_patch.rb', line 3
def self.apply!
return if defined?(::ActiveModel::Validations::ReformAcceptanceValidator)
klass = Class.new(::ActiveModel::EachValidator) do
def initialize(options)
super({ allow_nil: true, accept: ["1", true] }.merge!(options))
end
def validate_each(record, attribute, value)
unless acceptable_option?(value)
if Gem::Version.new(::ActiveModel::VERSION::STRING) >= Gem::Version.new('6.1.0')
record.errors.add(attribute, :accepted, **options.except(:accept, :allow_nil))
else
record.errors.add(attribute, :accepted, options.except(:accept, :allow_nil))
end
end
end
private
def acceptable_option?(value)
Array(options[:accept]).include?(value)
end
end
::ActiveModel::Validations.const_set(:ReformAcceptanceValidator, klass)
::ActiveModel::Validations.send(:remove_const, :AcceptanceValidator)
::ActiveModel::Validations.const_set(:AcceptanceValidator, klass)
end
|