diff --git a/lib/active_interaction/filters/boolean_filter.rb b/lib/active_interaction/filters/boolean_filter.rb index a96d5cb9..25f5688a 100644 --- a/lib/active_interaction/filters/boolean_filter.rb +++ b/lib/active_interaction/filters/boolean_filter.rb @@ -21,9 +21,9 @@ class BooleanFilter < Filter def cast(value, _interaction) case value - when FalseClass, '0', /\Afalse\z/i + when FalseClass, '0', /\Afalse\z/i, /\Aoff\z/i false - when TrueClass, '1', /\Atrue\z/i + when TrueClass, '1', /\Atrue\z/i, /\Aon\z/i true else super diff --git a/spec/active_interaction/filters/boolean_filter_spec.rb b/spec/active_interaction/filters/boolean_filter_spec.rb index 8abc8e6a..5ef705a7 100644 --- a/spec/active_interaction/filters/boolean_filter_spec.rb +++ b/spec/active_interaction/filters/boolean_filter_spec.rb @@ -8,7 +8,7 @@ describe '#cast' do context 'falsey' do - [false, '0', 'false', 'FALSE'].each do |value| + [false, '0', 'false', 'FALSE', 'off', 'OFF'].each do |value| it "returns false for #{value.inspect}" do expect(filter.cast(value, nil)).to be_falsey end @@ -16,7 +16,7 @@ end context 'truthy' do - [true, '1', 'true', 'TRUE'].each do |value| + [true, '1', 'true', 'TRUE', 'on', 'ON'].each do |value| it "returns true for #{value.inspect}" do expect(filter.cast(value, nil)).to be_truthy end