Collection of ActiveModel/ActiveRecord validations
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
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
Exhaustive list of supported validators and their implementation:
email
: based on themail
gemurl
: based on a regular expressionphone
: based on a regular expressiontwitter
: based on a regular expressionslug
: based onActiveSupport::String#parameterize
ip
: based onResolv::IPv[4|6]::Regex
credit_card
: based on theLuhn
algorithmdate
: based on theDateValidator
gempassword
: based on a set of regular expressions
Lots of improvements can be made:
- Add I18n specific types of error messages for each validator
- Implement new validators
- ...
- 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.
- Franck Verrot
- Oriol Gual
- Paco Guzmán
- Garrett Bjerkhoel
Copyright (c) 2010 Franck Verrot. MIT LICENSE. See LICENSE for details.