I'm having a problem extending ActiveRecord with custom validations
based on the "Write Custom Validations" recipe from Advanced Rails
Recipes.  As far as I can tell, I've followed the instructions exactly
but for some reason this isn't working and it's driving me crazy.
I've tried making the methods in the custom validations module class
methods (self.validates...) as well as the way they are below (which
is the way they are in the instructions).

Any suggestions?

Thanks!
Gavin

***
lib/custom_validations.rb

module CustomValidations
  def validates_phone(*attr_names)
    attr_names.each do |attr_name|
      validates_format_of attr_name,
            :with => /^[\(\)0-9\- \+\.]{10,20} *[extension\.]{0,9} *
[0-9]{0,5}$/i,
            :message => "invalid"
    end
  end
  def validates_email(*attr_names)
    attr_names.each do |attr_name|
      validates_format_of attr_name,
            :with => /(^([EMAIL 
PROTECTED])@((?:[-_a-z0-9]+\.)+[a-z]{2,})$)|(^$)/
i,
            :message => "invalid"
    end
  end
end
ActiveRecord::Base.extend(CustomValidations)

***
config/environment.rb

# Be sure to restart your server when you modify this file

# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'

#normal environment.rb stuff

end

require 'custom_validations'

***
models/user.rb

class User < ActiveRecord::Base
  validates_email   :email
end

***
error from console when starting server

/vendor/rails/activerecord/lib/active_record/base.rb:1667:in
`method_missing': undefined method `validates_email' for #<Class:
0x31ac9c8> (NoMethodError)

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to