Sha256: 327d36b32f4e625b09063273e775256494f5f9fb7987c98bfc1565947f95fac4

Contents?: true

Size: 816 Bytes

Versions: 12

Compression:

Stored size: 816 Bytes

Contents

class Person < ActiveRecord::Base
  has_many :authorships, foreign_key: :author_id, dependent: :destroy
  has_many :books, through: :authorships
  has_paper_trail

  # Convert strings to TimeZone objects when assigned
  def time_zone=(value)
    if value.is_a? ActiveSupport::TimeZone
      super
    else
      zone = ::Time.find_zone(value) # nil if can't find time zone
      super zone
    end
  end

  # Store TimeZone objects as strings when serialized to database
  class TimeZoneSerializer
    class << self
      def dump(zone)
        zone.try(:name)
      end

      def load(value)
        ::Time.find_zone(value)
      end
    end

    def dump(zone)
      self.class.dump(zone)
    end

    def load(value)
      self.class.load(value)
    end
  end

  serialize :time_zone, TimeZoneSerializer.new
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/paper_trail-5.2.3/test/dummy/app/models/person.rb
paper_trail-6.0.2 test/dummy/app/models/person.rb
paper_trail-6.0.1 test/dummy/app/models/person.rb
paper_trail-6.0.0 test/dummy/app/models/person.rb
paper_trail-5.2.3 test/dummy/app/models/person.rb
paper_trail-5.2.2 test/dummy/app/models/person.rb
paper_trail-5.2.1 test/dummy/app/models/person.rb
paper_trail-5.2.0 test/dummy/app/models/person.rb
paper_trail-5.1.1 test/dummy/app/models/person.rb
paper_trail-5.1.0 test/dummy/app/models/person.rb
paper_trail-5.0.1 test/dummy/app/models/person.rb
paper_trail-5.0.0 test/dummy/app/models/person.rb