mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-25 07:16:41 +00:00
multiparameter extension for AR
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
module ValidatesTimeliness
|
||||
module Extensions
|
||||
autoload :DateTimeSelect, 'validates_timeliness/extensions/date_time_select'
|
||||
autoload :DateTimeSelect, 'validates_timeliness/extensions/date_time_select'
|
||||
autoload :MultiparameterParser, 'validates_timeliness/extensions/multiparameter_parser'
|
||||
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)
|
||||
end
|
||||
end
|
||||
|
||||
31
lib/validates_timeliness/extensions/multiparameter_parser.rb
Normal file
31
lib/validates_timeliness/extensions/multiparameter_parser.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
module ValidatesTimeliness
|
||||
module Extensions
|
||||
module MultiparameterParser
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
alias_method_chain :instantiate_time_object, :timeliness
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Stricter handling of date and time values from multiparameter
|
||||
# assignment from the date/time select view helpers
|
||||
#
|
||||
def instantiate_time_object_with_timeliness(name, values)
|
||||
unless Date.valid_civil?(*values[0..2])
|
||||
value = [values[0], *values[1..2].map {|s| s.to_s.rjust(2,"0")} ].join("-")
|
||||
value += ' ' + values[3..5].map {|s| s.to_s.rjust(2, "0") }.join(":") unless values[3..5].empty?
|
||||
return value
|
||||
end
|
||||
|
||||
if self.class.send(:create_time_zone_conversion_attribute?, name, column_for_attribute(name))
|
||||
Time.zone.local(*values)
|
||||
else
|
||||
Time.time_with_datetime_fallback(@@default_timezone, *values)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user