From 4028413631f5e89b0797f4e2b5dbc991e92de960 Mon Sep 17 00:00:00 2001 From: Adam Meehan Date: Tue, 3 Aug 2010 23:22:27 +1000 Subject: [PATCH] multiparameter value handler --- README.rdoc | 15 ++++++++++++++- .../templates/validates_timeliness.rb | 3 +++ lib/validates_timeliness/extensions.rb | 8 ++++---- ...ameter_parser.rb => multiparameter_handler.rb} | 2 +- ...ser_spec.rb => multiparameter_handler_spec.rb} | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) rename lib/validates_timeliness/extensions/{multiparameter_parser.rb => multiparameter_handler.rb} (96%) rename spec/validates_timeliness/extensions/{multiparameter_parser_spec.rb => multiparameter_handler_spec.rb} (91%) diff --git a/README.rdoc b/README.rdoc index 983a566..c4200e2 100644 --- a/README.rdoc +++ b/README.rdoc @@ -141,7 +141,7 @@ To turn them on/off: === DISPLAY INVALID VALUES IN DATE/TIME SELECT HELPERS: -The plugin has some extensions to ActionView for allowing invalid +The plugin offers an extension for ActionView to allowing invalid date and time values to be redisplayed to the user as feedback, instead of a blank field which happens by default in Rails. Though the date helpers make this a pretty rare occurrence, given the select dropdowns for each date/time component, but @@ -153,6 +153,19 @@ To activate it, put this in an initializer: config.enable_date_time_select_extension! +=== STRICT DATE/TIME VALUES FOR SELECT HELPERS + +When using date/time select helpers, the component values are handled by ActiveRecord using +the Time class to instantiate them into a time value. But this mean that some invalid dates, +such as 31st June, are shifted forward and treated as valid. To handle these cases in a strict +way you can enable the plugin handler to treat them as invalid dates. + +To activate it, put this in an initializer: + + # in the setup block + config.enable_multiparameter_handler! + + ... diff --git a/lib/generators/validates_timeliness/templates/validates_timeliness.rb b/lib/generators/validates_timeliness/templates/validates_timeliness.rb index b51eed3..e397518 100644 --- a/lib/generators/validates_timeliness/templates/validates_timeliness.rb +++ b/lib/generators/validates_timeliness/templates/validates_timeliness.rb @@ -10,4 +10,7 @@ ValidatesTimeliness.setup do |config| # # Re-display invalid values in date/time selects # config.enable_date_time_select_extension! + # + # Handle multiparameter date/time values strictly + # config.enable_multiparameter_handler! end diff --git a/lib/validates_timeliness/extensions.rb b/lib/validates_timeliness/extensions.rb index f70e3c0..f3d9578 100644 --- a/lib/validates_timeliness/extensions.rb +++ b/lib/validates_timeliness/extensions.rb @@ -1,14 +1,14 @@ module ValidatesTimeliness module Extensions - autoload :DateTimeSelect, 'validates_timeliness/extensions/date_time_select' - autoload :MultiparameterParser, 'validates_timeliness/extensions/multiparameter_parser' + autoload :DateTimeSelect, 'validates_timeliness/extensions/date_time_select' + autoload :MultiparameterHandler, 'validates_timeliness/extensions/multiparameter_handler' end def self.enable_date_time_select_extension! ::ActionView::Helpers::InstanceTag.send(:include, ValidatesTimeliness::Extensions::DateTimeSelect) end - def self.enable_multiparameter_parser! - ::ActiveRecord::Base.send(:include, ValidatesTimeliness::Extensions::MultiparameterParser) + def self.enable_multiparameter_handler! + ::ActiveRecord::Base.send(:include, ValidatesTimeliness::Extensions::MultiparameterHandler) end end diff --git a/lib/validates_timeliness/extensions/multiparameter_parser.rb b/lib/validates_timeliness/extensions/multiparameter_handler.rb similarity index 96% rename from lib/validates_timeliness/extensions/multiparameter_parser.rb rename to lib/validates_timeliness/extensions/multiparameter_handler.rb index 8b39b76..ced8a6a 100644 --- a/lib/validates_timeliness/extensions/multiparameter_parser.rb +++ b/lib/validates_timeliness/extensions/multiparameter_handler.rb @@ -1,6 +1,6 @@ module ValidatesTimeliness module Extensions - module MultiparameterParser + module MultiparameterHandler extend ActiveSupport::Concern included do diff --git a/spec/validates_timeliness/extensions/multiparameter_parser_spec.rb b/spec/validates_timeliness/extensions/multiparameter_handler_spec.rb similarity index 91% rename from spec/validates_timeliness/extensions/multiparameter_parser_spec.rb rename to spec/validates_timeliness/extensions/multiparameter_handler_spec.rb index bda2693..7ee81b8 100644 --- a/spec/validates_timeliness/extensions/multiparameter_parser_spec.rb +++ b/spec/validates_timeliness/extensions/multiparameter_handler_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe ValidatesTimeliness::Extensions::MultiparameterParser do +describe ValidatesTimeliness::Extensions::MultiparameterHandler do let(:employee) { Employee.new } it 'should return string value for invalid dates' do