diff --git a/lib/validates_timeliness/validator.rb b/lib/validates_timeliness/validator.rb index f76bdfb..945a4f6 100644 --- a/lib/validates_timeliness/validator.rb +++ b/lib/validates_timeliness/validator.rb @@ -22,7 +22,7 @@ module ValidatesTimeliness if range = options.delete(:between) raise ArgumentError, ":between must be a Range or an Array" unless range.is_a?(Range) || range.is_a?(Array) - options[:on_or_after], options[:on_or_before] = range.begin, range.end + options[:on_or_after], options[:on_or_before] = range.first, range.last end super end diff --git a/spec/validates_timeliness/validator_spec.rb b/spec/validates_timeliness/validator_spec.rb index e1ccba5..fa20ffe 100644 --- a/spec/validates_timeliness/validator_spec.rb +++ b/spec/validates_timeliness/validator_spec.rb @@ -46,4 +46,24 @@ describe ValidatesTimeliness::Validator do valid!(:birth_date, '') end end + + describe ":between option" do + describe "array value" do + it 'should be split option into :on_or_after and :on_or_before values' do + on_or_after, on_or_before = Date.new(2010,1,1), Date.new(2010,1,2) + Person.validates_time :birth_date, :between => [on_or_after, on_or_before] + Person.validators.first.options[:on_or_after].should == on_or_after + Person.validators.first.options[:on_or_before].should == on_or_before + end + end + + describe "range value" do + it 'should be split option into :on_or_after and :on_or_before values' do + on_or_after, on_or_before = Date.new(2010,1,1), Date.new(2010,1,2) + Person.validates_time :birth_date, :between => on_or_after..on_or_before + Person.validators.first.options[:on_or_after].should == on_or_after + Person.validators.first.options[:on_or_before].should == on_or_before + end + end + end end