Validating an individual field (Rails 3)

I'm working on a form using a model that isn't tied to a database or ORM at all and using ActiveModel::Validations works like a charm. I'm very pleased with it thus far.

However, I can't find an obvious way to validate a single field rather than the whole model. Is there a simple way to do this?

I am not aware of such a feature but you could write your own validation method in the model and invoke it like any other method after the field is populated.

I tried to figure out how .valid? did it by tracing back through the code and ultimate found a method being called:


Unfortunately, I couldn't find the actual def anywhere because I'm guessing something in ActiveSupport::Callbacks creates the method. I didn't have a desire to go through all the metaprogramming, but after some digging I found enough to write this method:

    def validate_field(field)       field = field.to_sym       if self._validators[field]         self.errors.clear         self._validators[field].each { |v| v.validate self }         self.errors[field]       else         nil       end     end

The reason for this method is that I have a form that validates as you fill it out via AJAX. One of the validation calls is pretty expensive so I don't want it called every time I do something like check to see if the passwords match.