Validate the date format
This commit is contained in:
parent
77d9a0235a
commit
6b377a577e
6 changed files with 65 additions and 3 deletions
1
Gemfile
1
Gemfile
|
@ -9,6 +9,7 @@ gem 'jquery-rails'
|
|||
gem 'jquery-ui-rails'
|
||||
gem 'jbuilder', '~> 1.2'
|
||||
gem 'thin'
|
||||
gem 'validates_timeliness', '~> 3.0'
|
||||
|
||||
group :doc do
|
||||
gem 'sdoc', require: false
|
||||
|
|
|
@ -168,6 +168,7 @@ GEM
|
|||
thread_safe (0.1.2)
|
||||
atomic
|
||||
tilt (1.4.1)
|
||||
timeliness (0.3.7)
|
||||
treetop (1.4.14)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
|
@ -175,6 +176,8 @@ GEM
|
|||
uglifier (2.1.2)
|
||||
execjs (>= 0.3.0)
|
||||
multi_json (~> 1.0, >= 1.0.2)
|
||||
validates_timeliness (3.0.14)
|
||||
timeliness (~> 0.3.6)
|
||||
xpath (2.0.0)
|
||||
nokogiri (~> 1.3)
|
||||
|
||||
|
@ -200,3 +203,4 @@ DEPENDENCIES
|
|||
sqlite3
|
||||
thin
|
||||
uglifier (>= 1.3.0)
|
||||
validates_timeliness (~> 3.0)
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
class Workout < ActiveRecord::Base
|
||||
validates :date, :presence => true
|
||||
validates_date :date
|
||||
end
|
||||
|
|
40
config/initializers/validates_timeliness.rb
Normal file
40
config/initializers/validates_timeliness.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
ValidatesTimeliness.setup do |config|
|
||||
# Extend ORM/ODMs for full support (:active_record, :mongoid).
|
||||
# config.extend_orms = [ :active_record ]
|
||||
#
|
||||
# Default timezone
|
||||
# config.default_timezone = :utc
|
||||
#
|
||||
# Set the dummy date part for a time type values.
|
||||
# config.dummy_date_for_time_type = [ 2000, 1, 1 ]
|
||||
#
|
||||
# Ignore errors when restriction options are evaluated
|
||||
# config.ignore_restriction_errors = false
|
||||
#
|
||||
# Re-display invalid values in date/time selects
|
||||
# config.enable_date_time_select_extension!
|
||||
#
|
||||
# Handle multiparameter date/time values strictly
|
||||
# config.enable_multiparameter_extension!
|
||||
#
|
||||
# Shorthand date and time symbols for restrictions
|
||||
# config.restriction_shorthand_symbols.update(
|
||||
# :now => lambda { Time.current },
|
||||
# :today => lambda { Date.current }
|
||||
# )
|
||||
#
|
||||
# Use the plugin date/time parser which is stricter and extendable
|
||||
# config.use_plugin_parser = false
|
||||
#
|
||||
# Add one or more formats making them valid. e.g. add_formats(:date, 'd(st|rd|th) of mmm, yyyy')
|
||||
# config.parser.add_formats()
|
||||
#
|
||||
# Remove one or more formats making them invalid. e.g. remove_formats(:date, 'dd/mm/yyy')
|
||||
# config.parser.remove_formats()
|
||||
#
|
||||
# Change the amiguous year threshold when parsing a 2 digit year
|
||||
# config.parser.ambiguous_year_threshold = 30
|
||||
#
|
||||
# Treat ambiguous dates, such as 01/02/1950, as a Non-US date.
|
||||
# config.parser.remove_us_formats
|
||||
end
|
16
config/locales/validates_timeliness.en.yml
Normal file
16
config/locales/validates_timeliness.en.yml
Normal file
|
@ -0,0 +1,16 @@
|
|||
en:
|
||||
errors:
|
||||
messages:
|
||||
invalid_date: "is not a valid date"
|
||||
invalid_time: "is not a valid time"
|
||||
invalid_datetime: "is not a valid datetime"
|
||||
is_at: "must be at %{restriction}"
|
||||
before: "must be before %{restriction}"
|
||||
on_or_before: "must be on or before %{restriction}"
|
||||
after: "must be after %{restriction}"
|
||||
on_or_after: "must be on or after %{restriction}"
|
||||
validates_timeliness:
|
||||
error_value_formats:
|
||||
date: '%Y-%m-%d'
|
||||
time: '%H:%M:%S'
|
||||
datetime: '%Y-%m-%d %H:%M:%S'
|
|
@ -79,12 +79,13 @@ describe "Workouts" do
|
|||
page.should have_content 'Workout created'
|
||||
end
|
||||
|
||||
it "should not allow a blank date" do
|
||||
it "should only accept real dates" do
|
||||
visit workouts_path
|
||||
click_link 'Create'
|
||||
fill_in 'Date', :with => '2013-13-13'
|
||||
click_button 'Create Workout'
|
||||
|
||||
page.should have_content "Date can't be blank"
|
||||
page.should have_content "Date is not a valid date"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue