Using standard validation methods in custom validation metho

Hi,

Is it possible to use standard validation methods in custom validation methods? eg:

def check_children   if children != ""     validates_numericality_of :children   end end

When I run this code I get a no method error:

undefined method `validates_numericality_of' for #<Applicant:0x5d1bba4>

Is there any way around this?

Thanks in advance

Hi,

Is it possible to use standard validation methods in custom validation methods? eg:

def check_children if children != "" validates_numericality_of :children end end

When I run this code I get a no method error:

undefined method `validates_numericality_of' for #<Applicant:0x5d1bba4>

Is there any way around this?

Not really. validates_numericality_of is a class method that defines an appropriate validation on a class. You may find the :allow_nil and :if or :unless options useful

Fred

Wow, that's very cool. I changed the line to:

validates_numericality_of :children, :if => Proc.new { |applicant|
true if applicant.children !="" }

you can even shorten that to

validates_numericality_of :children, :if => Proc.new { |applicant|
applicant.children !="" }

Fred

you can even shorten that to

validates_numericality_of :children, :if => Proc.new { |applicant| applicant.children !="" }

Cool! Thanks a lot.

Jim Burgess wrote:

you can even shorten that to

validates_numericality_of :children, :if => Proc.new { |applicant| applicant.children !="" }

Looks like a case for allow_nil:

validates_numericality_of :children, :allow_nil => true

The documentation at http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M000091

mentions

:allow_nil - Skip validation if attribute is nil (default is false). Notice that for fixnum and float columns empty strings are converted to nil.

Stephan

Thanks for your reply

Looks like a case for allow_nil:

validates_numericality_of :children, :allow_nil => true

I created the field 'children' as a string (can't remember why, perhaps because someone might enter 'none'??), so that doesn't work.

Is there any big advantage to changing the field 'children' into an interger?

Jim Burgess wrote:

Thanks for your reply

Looks like a case for allow_nil:

validates_numericality_of :children, :allow_nil => true

I created the field 'children' as a string (can't remember why, perhaps because someone might enter 'none'??), so that doesn't work.

Is there any big advantage to changing the field 'children' into an interger?

Well, if the column will hold numbers sure there is an advantage. You can perform arithmetic and numeric comparisons. You can sort based on the natural order of numbers, not based on lexicographical order.

Stephan

Well, if the column will hold numbers sure there is an advantage. You can perform arithmetic and numeric comparisons. You can sort based on the natural order of numbers, not based on lexicographical order.

Yeah, that's true enough. I'll get it changed as I want to do everything properly. Thanks for your help.