Thanks Fred, interesting blog post!

On Dec 9, 11:40 am, Frederick Cheung <[EMAIL PROTECTED]>
wrote:
> 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-d...
>
> 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 [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