mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-22 22:06:45 +00:00
Use prepend for Type overrides /ht @jasl closes #179
This commit is contained in:
parent
af406cdedc
commit
70335cd0ba
@ -9,36 +9,36 @@ module ValidatesTimeliness
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
ActiveModel::Type::Date.class_eval do
|
ActiveModel::Type::Date.prepend Module.new {
|
||||||
# Module.new do |m|
|
def cast_value(value)
|
||||||
def cast_value(value)
|
return super unless ValidatesTimeliness.use_plugin_parser
|
||||||
return super unless ValidatesTimeliness.use_plugin_parser
|
|
||||||
|
|
||||||
if value.is_a?(::String)
|
if value.is_a?(::String)
|
||||||
return if value.empty?
|
return if value.empty?
|
||||||
value = Timeliness::Parser.parse(value, :date)
|
value = Timeliness::Parser.parse(value, :date)
|
||||||
value.to_date if value
|
value.to_date if value
|
||||||
elsif value.respond_to?(:to_date)
|
elsif value.respond_to?(:to_date)
|
||||||
value.to_date
|
value.to_date
|
||||||
else
|
else
|
||||||
value
|
value
|
||||||
end
|
|
||||||
end
|
end
|
||||||
# end.tap { |mod| include mod }
|
end
|
||||||
end
|
}
|
||||||
|
|
||||||
ActiveModel::Type::Time.class_eval do
|
ActiveModel::Type::Time.prepend Module.new {
|
||||||
def user_input_in_time_zone(value)
|
def user_input_in_time_zone(value)
|
||||||
if value.is_a?(String) && ValidatesTimeliness.use_plugin_parser
|
return super unless ValidatesTimeliness.use_plugin_parser
|
||||||
|
|
||||||
|
if value.is_a?(String)
|
||||||
dummy_time_value = value.sub(/\A(\d\d\d\d-\d\d-\d\d |)/, Date.current.to_s + ' ')
|
dummy_time_value = value.sub(/\A(\d\d\d\d-\d\d-\d\d |)/, Date.current.to_s + ' ')
|
||||||
Timeliness::Parser.parse(dummy_time_value, :datetime, zone: :current)
|
Timeliness::Parser.parse(dummy_time_value, :datetime, zone: :current)
|
||||||
else
|
else
|
||||||
value.in_time_zone
|
value.in_time_zone
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
}
|
||||||
|
|
||||||
ActiveModel::Type::DateTime.class_eval do
|
ActiveModel::Type::DateTime.prepend Module.new {
|
||||||
def user_input_in_time_zone(value)
|
def user_input_in_time_zone(value)
|
||||||
if value.is_a?(String) && ValidatesTimeliness.use_plugin_parser
|
if value.is_a?(String) && ValidatesTimeliness.use_plugin_parser
|
||||||
Timeliness::Parser.parse(value, :datetime, zone: :current)
|
Timeliness::Parser.parse(value, :datetime, zone: :current)
|
||||||
@ -46,4 +46,4 @@ ActiveModel::Type::DateTime.class_eval do
|
|||||||
value.in_time_zone
|
value.in_time_zone
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
}
|
||||||
Loading…
Reference in New Issue
Block a user