I know that there is an ActiveModel Validator class https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validator.rb which is used for the class level validation macros. But I didn''t find a an ActiveRecord Validator class. From my understanding in Rails 3, validations have been moved into ActiveModel to leave ActiveRecord as an ORM. So now I see this Rails 3 code in a Rails 3 book and get confused: Class EmailValidator < ActiveRecord::Validator def validate() email_field = options[:attr] record.errors[email_field] << “is not valid” unless record.send(email_field) =~ /^[a-z]$/ end end class Account < ActiveRecord::Base validates_with EmailValidator, :attr => :email end Where is this ActiveRecord::Validator coming from? Also why does it exist when you can simply do this in ActiveModel: class RandomlyValidator < ActiveModel::Validator def validate(record) record.errors[:base] << “FAIL #1” unless first_hurdle(record) #add error messages to the whole object instead of a particular attribute using the :base key. record.errors[:base] << “Fail #2” unless second_hurdle(record) record.errors[:base] << “Fail #3” unless third_hurdle(record) end private def first_hurdle(record) rand > 0.3 end def second_hurdle(record) rand > 0.6 end def third_hurdle(record) rand > 0.9 end end class Report < ActiveRecord::Base validates_with RandomlyValidator end thanks for response -- 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-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.