11155
(-- --)
March 5, 2010, 6:08am
1
I have wrote an validation function for checking that my starting date
should be greater than the current date as like
validate :start_date_should_not_be_greater_than_current_date
def start_date_should_not_be_greater_than_current_date
if self.start_date > Date.today
errors.add("Whatever")
end
end
But the problem is that when i left empty the field for start_date when
filling values in form, this error is coming:-
Viorel
(Viorel)
March 5, 2010, 8:44am
2
If the field is empty, then self.start_date is nil. Try this:
def start_date_should_not_be_greater_than_current_date
if !self.start_date.nil?
if self.start_date > Date.today
errors.add("Whatever")
end
end
end
or something similar
validate :start_date_should_not_be_greater_than_current_date
Personally I’d rename that to:
valid :start_date_before_now
And then I’d do this as the method:
def start_date_before_now
if start_date && start_date > Date.today
errors.add(“Whatever”)
end
end
Just check start_date first. You don’t need the .nil? check as nil evaluates to false (and any valid date is true). Note, you don’t need to do self.start_date when reading a value, only when assigning to it (the reason is that reading the value will default to calling the method if no local variable exists, but writing a value will default to creating a local variable rather than calling the value= method).
Cheers,
Andy
11155
(-- --)
March 5, 2010, 10:51am
4
Andy Jeffries wrote:
validate :start_date_should_not_be_greater_than_current_date
Personally I'd rename that to:
valid :start_date_before_now
And then I'd do this as the method:
def start_date_before_now
if start_date && start_date > Date.today
errors.add("Whatever")
end
end
Thanks andy.. This worked like a charm ..