Lasse, Yes, that was exactly what I needed.
I see I need to explore the specifics of mixing in (which maybe Matz's book underserves) -- in this case it was the self.include(base) expression that was key. Finally, where attributes refer logically to the same kind of data, but have different names, I have aliased them to allow the broadest use of my version of your validation module. Thanks so much, Grar On Apr 1, 9:41 am, Lasse Bunk <[email protected]> wrote: > Hi Grar, > > If you have a User model where you want to use some shared validations, you > could create a module like this – in lib/my_email_validations.rb: > > module MyEmailValidations > def self.included(base) > base.validates_presence_of :email > base.validates_length_of :email, :minimum => 6 > base.validate :email_must_be_from_valid_provider > end > > # example of a custom validator > def email_must_be_from_valid_provider > errors.add :email, "must be from a valid provider" if > email !~ /[email protected]$/ > end > end > > and in your User model, include them like this: > > class User < ActiveRecord::Base > include MyEmailValidations > end > > Does this solve your problem? > > /Lasse > > 2010/4/1 Grary <[email protected]> > > > Hi, > > > Despite close reading of Matz's Ruby book and Agile Web Dev. w. Rails, > > I can't figure out how to tackle the challenge of sharing validation > > code across models with attributes in common. > > > In each of my models I'd like to validate the shared attributes with a > > custom validator that includes Rails ActiveRecord::Validations class > > methods and some of my own validations. My problem is 1) I don't know > > how to pass attribute references to my special method and 2) (mundane) > > I can't successfully call any ActiveRecord::Validations class methods > > from within my custom method. > > > A bit of garbage here, I know, but any thoughts? Is this kind of > > problem handled by use of certain gems? > > > Thanks, > > > Grar > > > -- > > 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]<rubyonrails-talk%[email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/rubyonrails-talk?hl=en. -- 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.

