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.