mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-23 06:16:44 +00:00
type cast value before blank check for invalid values
This commit is contained in:
parent
34a2d4b558
commit
40e404681e
@ -10,6 +10,8 @@ module ValidatesTimeliness
|
||||
when :datetime
|
||||
value.to_time.in_time_zone
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
||||
def dummy_time(value)
|
||||
|
||||
@ -35,10 +35,10 @@ module ValidatesTimeliness
|
||||
raw_value = attribute_raw_value(record, attr_name) || value
|
||||
return if (@allow_nil && raw_value.nil?) || (@allow_blank && raw_value.blank?)
|
||||
|
||||
return record.errors.add(attr_name, :"invalid_#{@type}") if value.blank?
|
||||
|
||||
value = type_cast(value)
|
||||
|
||||
return record.errors.add(attr_name, :"invalid_#{@type}") if value.blank?
|
||||
|
||||
@check_restrictions.each do |restriction|
|
||||
begin
|
||||
restriction_value = type_cast(evaluate_option_value(options[restriction], record))
|
||||
|
||||
@ -26,6 +26,20 @@ describe ValidatesTimeliness::Validator do
|
||||
end
|
||||
end
|
||||
|
||||
it 'should not be valid for value which not valid date or time value' do
|
||||
Person.validates_date :birth_date
|
||||
invalid!(:birth_date, "Not a date", 'is not a valid date')
|
||||
end
|
||||
|
||||
it 'should not be valid attribute is type cast to nil but raw value is non-nil invalid value' do
|
||||
Person.validates_date :birth_date, :allow_nil => true
|
||||
record = Person.new
|
||||
record.stub!(:birth_date).and_return(nil)
|
||||
record.stub!(:birth_date_before_type_cast).and_return("Not a date")
|
||||
record.should_not be_valid
|
||||
record.errors[:birth_date].first.should == 'is not a valid date'
|
||||
end
|
||||
|
||||
describe ":allow_nil option" do
|
||||
it 'should not allow nil by default' do
|
||||
Person.validates_date :birth_date
|
||||
|
||||
Loading…
Reference in New Issue
Block a user