Sha256: c86add8f7516fb8d4117db75f775f1e2793a3da331c231d7bbf9db38ecc53b19
Contents?: true
Size: 782 Bytes
Versions: 8
Compression:
Stored size: 782 Bytes
Contents
module RailsBase class ApplicationRecord < ::ApplicationRecord self.abstract_class = true def self._magically_defined_time_objects columns.each do |column| next unless [:datetime].include?(column.type) # This is actually pretty cool. If you set the thread corectly, you can define_method("#{column.name}") do thread_tz = Thread.current[RailsBaseApplicationController::TIMEZONE_THREAD_NAME] return super() if thread_tz.nil? time = self[column.name].in_time_zone(thread_tz) rescue self[column.name] Rails.logger.debug { "#{self.class.name}.#{column.name} intercepted :datetime [#{self[column.name]}] and returned [#{time}] - tz[#{thread_tz}]" } time end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems