From ac371655974aff8c7d09ab374fa2d3e9f1fa6f15 Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Tue, 20 May 2014 07:51:33 -0700 Subject: Delegate type_cast to injected type object in mysql --- .../connection_adapters/type/time_value.rb | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 activerecord/lib/active_record/connection_adapters/type/time_value.rb (limited to 'activerecord/lib/active_record/connection_adapters/type/time_value.rb') diff --git a/activerecord/lib/active_record/connection_adapters/type/time_value.rb b/activerecord/lib/active_record/connection_adapters/type/time_value.rb new file mode 100644 index 0000000000..d9564d7f48 --- /dev/null +++ b/activerecord/lib/active_record/connection_adapters/type/time_value.rb @@ -0,0 +1,24 @@ +module ActiveRecord + module ConnectionAdapters + module Type + module TimeValue # :nodoc: + private + + def new_time(year, mon, mday, hour, min, sec, microsec, offset = nil) + # Treat 0000-00-00 00:00:00 as nil. + return if year.nil? || (year == 0 && mon == 0 && mday == 0) + + if offset + time = ::Time.utc(year, mon, mday, hour, min, sec, microsec) rescue nil + return unless time + + time -= offset + Base.default_timezone == :utc ? time : time.getlocal + else + ::Time.public_send(Base.default_timezone, year, mon, mday, hour, min, sec, microsec) rescue nil + end + end + end + end + end +end -- cgit v1.2.3