Using standard validation methods in custom validation metho


#1

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


#2

On May 15, 9:15 am, Jim B. removed_email_address@domain.invalid
wrote:

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


#3

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

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

and that does exactly what I want.
Thanks for your time and help, Fred.


#4

On 15 May 2009, at 10:24, Jim B. wrote:

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


#5

you can even shorten that to

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

Cool!
Thanks a lot.


#6

Jim B. 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

Cool!
Thanks a lot.


#7

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?


#8

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.


#9

Jim B. 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