On Tue, Feb 9, 2010 at 4:03 PM, Ichiro Saga <li...@ruby-forum.com> wrote:
> Hi, there. > I have two validations in the model: > > validates_numericality_of :value, :only_integer=>true, > :allow_blank=>true > validates_size_of :value, :is=>9, :message=>"must be 5-digit number", > :if=>Proc.new{|u| u.value.is_a?(Numeric)} > > Ichiro, you have a bit of duplication within your validates_*. For example, you're testing whether or not :value is numeric within both validates_* methods. Next, the :is compares the number of bytes and not the number of characters you should be able to do the following: validates_numericality_of :value, :only_integer => true, :allow_blank => true # make sure that it's an integer validate :number_of_digits # make sure that we have five digits private def number_of_digits unless self.value.to_s.size == 5 errors.add :value, "should be 5 digits" end end Good luck, -Conrad > They work as expected except when the :value is character/string like > "a" "abc", the second validation will also output error message "must be > 5-digit number". What I want is the second validation displays error > message only when the :value is a number. I think :if=>Proc.new{|u| > u.value.is_a?(Numeric)} would take care of it, but it didn't. > > The second problem is about the custom validation. I got a very simple > custom validation. Whenever there is an error, it catches it and shows > the error message. But the field with error is not highlighted. I > checked the source of the page, the "fieldwitherror" was not generated > on the field checked by the custom validation. I tried the > validation_reflection plugin. It catched the error but there's no error > message under the field. Normally that's where the message should be. > I guess they are related but I am not sure what causes it. > > Any help will be appreciated. > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-t...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.