Thanks Fred, that worked! I created config/initializers/ custom_validations.rb and moved the require line there from the environment.rb file. It's not clear to me why this works, and it seems like it's overkill to create a new file for this, but as long as it works it's cool with me.
Thanks again. -Gavin On Dec 9, 11:09 am, Frederick Cheung <[EMAIL PROTECTED]> wrote: > On 9 Dec 2008, at 19:05, gaveeno wrote: > > > > > 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? > > Have you tried requiring it from an initializer, not the bottom of > environment.rb ? > > Fred > > > 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 rubyonrails-talk@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---