Skip to content
Collection of ActiveModel/ActiveRecord validators https://github.com/cesario/activevalidators
Ruby
Find file
Pull request Compare This branch is 20 commits ahead, 61 commits behind utahstreetlabs:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
autotest
lib
spec
.gitignore
.rspec
.rvmrc
.travis.yml
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
activevalidators.gemspec

README.md

ActiveValidators Travis

Collection of ActiveModel/ActiveRecord validations

Installation (Rails 3)

In your Gemfile ( >>= 1.1.0 ):

gem 'activevalidators'

In your models, the gem provides new validators like email, or url:

class User
  validates :email_address, :email => true
  validates :link_url,      :url   => true
  validates :user_phone,    :phone => true
  validates :password,      :password => { :strength => :medium }
  validates :twitter_at,    :twitter => { :format => :username_with_at }
  validates :twitter_url,   :twitter => { :format => :url }
  validates :twitter,       :twitter => true
  validates :postal_code,   :postal_code => { :format => :us }
end

class Article
  validates :slug,          :slug => true
  validates :expiration_date,
                  :date => {
                             :after => lambda { Time.now },
                             :before => lambda { Time.now + 1.year }
                           }
end

class Device
  validates :ipv6,          :ip => { :format => :v6 }
  validates :ipv4,          :ip => { :format => :v4 }
end

class Account
  validates :visa_card,     :credit_card => { :type => :visa }
  validates :credit_card,   :credit_card => { :type => :any  }
end

class Order
  validates :tracking_num,  :tracking_number => { :carrier => :ups }
end

Exhaustive list of supported validators and their implementation:

  • email : based on the mail gem
  • url : based on a regular expression
  • phone : based on a set of predefined masks
  • twitter : based on a regular expression
  • slug : based on ActiveSupport::String#parameterize
  • ip : based on Resolv::IPv[4|6]::Regex
  • credit_card : based on the Luhn algorithm
  • date : based on the DateValidator gem
  • password : based on a set of regular expressions
  • postal_code: based on a set of predefined masks
  • tracking_number: based on a set of predefined masks

Todo

Lots of improvements can be made:

  • Implement new validators
  • ...

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Contributors

  • Franck Verrot
  • Oriol Gual
  • Paco Guzmán
  • Garrett Bjerkhoel
  • Renato Riccieri Santos Zannon
  • Brian Moseley

Copyright

Copyright (c) 2010-2011 Franck Verrot. MIT LICENSE. See LICENSE for details.

Something went wrong with that request. Please try again.