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 !~ /@gmail.com$/
    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.

Reply via email to