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

Version Path
rails_base-0.74.0 app/models/rails_base/application_record.rb
rails_base-0.73.1 app/models/rails_base/application_record.rb
rails_base-0.73.0 app/models/rails_base/application_record.rb
rails_base-0.72.1 app/models/rails_base/application_record.rb
rails_base-0.72.0 app/models/rails_base/application_record.rb
rails_base-0.71.0 app/models/rails_base/application_record.rb
rails_base-0.70.1.pre app/models/rails_base/application_record.rb
rails_base-0.70.0 app/models/rails_base/application_record.rb