On Dec 9, 7:17 pm, gaveeno <[EMAIL PROTECTED]> wrote:
> 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

Short version: because it means the require will happen at the right
time.
Long version: 
http://www.spacevatican.org/2008/11/21/environment-rb-and-requiring-dependencies

Fred
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to