Sha256: 03f23d9cce53c450e01afb6035d4b3469446630b8745aa503e8a0051ffb38414

Contents?: true

Size: 935 Bytes

Versions: 10

Compression:

Stored size: 935 Bytes

Contents

module PandaPal
  class Session < ActiveRecord::Base
    belongs_to :panda_pal_organization, class_name: 'PandaPal::Organization'

    validates :panda_pal_organization_id, presence: true

    after_initialize do
      self.session_key ||= SecureRandom.urlsafe_base64(60)
    end

    class DataSerializer
      def self.load(str)
        return {} unless str.present?
        begin
          parsed = JSON.parse(str)
        rescue JSON::ParserError
          parsed = yaml_load(str)
        end
        parsed.is_a?(Hash) ? HashWithIndifferentAccess.new(parsed) : parsed
      end

      def self.dump(obj)
        JSON.dump(obj)
      end

      private

      if YAML.respond_to?(:unsafe_load)
        def self.yaml_load(payload)
          YAML.unsafe_load(payload)
        end
      else
        def self.yaml_load(payload)
          YAML.load(payload)
        end
      end
    end

    serialize :data, DataSerializer
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
panda_pal-5.6.7.beta1 app/models/panda_pal/session.rb
panda_pal-5.6.6 app/models/panda_pal/session.rb
panda_pal-5.6.5 app/models/panda_pal/session.rb
panda_pal-5.6.4 app/models/panda_pal/session.rb
panda_pal-5.6.3 app/models/panda_pal/session.rb
panda_pal-5.6.2 app/models/panda_pal/session.rb
panda_pal-5.6.1 app/models/panda_pal/session.rb
panda_pal-5.6.0 app/models/panda_pal/session.rb
panda_pal-5.4.11 app/models/panda_pal/session.rb
panda_pal-5.4.10 app/models/panda_pal/session.rb