You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A simple date validator for Rails. Should be compatible with all latest Rubies (>2.2, includes Ruby 3.0).
$ gem install date_validator
And I mean simple. In your model:
validates:expiration_date,date: true
or with some options, such as:
validates:expiration_date,date: {after: Proc.new{Time.now},before: Proc.new{Time.now + 1.year}}# Using Proc.new prevents production cache issues
If you want to check the date against another attribute, you can pass it
a Symbol instead of a block:
# Ensure the expiration date is after the packaging datevalidates:expiration_date,date: {after: :packaging_date}
or access attributes via the object being validated directly (the input to the Proc):
validates:due_date,date: {after_or_equal_to: Proc.new{ |obj| obj.created_at.to_date}# The object being validated is available in the Proc
For now the available options you can use are :after, :before,
:after_or_equal_to, :before_or_equal_to and :equal_to.
If you want to specify a custom message, you can do so in the options hash:
validates:start_date,date: {after: Proc.new{Date.today},message: 'must be after today'},on: :create
Pretty much self-explanatory! :)
If you want to make sure an attribute is before/after another attribute, use:
validates:start_date,date: {before: :end_date}
If you want to allow an empty date, use:
validates:optional_date,date: {allow_blank: true}
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 us a pull request. Bonus points for topic branches.
Copyright
Copyright (c) 2013 Codegram. See LICENSE for details.
About
A simple, ORM agnostic, Ruby >=2.2 compatible date validator for Rails, based on ActiveModel.