Sha256: af51e2214131aeea83db74c233e86e1ef732e9af426f2e10b4132f1dfd0fcff1

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

require_relative 'attributes/type_map'
require_relative 'attributes/lazy'

require_relative 'attributes/builder'

require_relative 'attributes/enum'
require_relative 'attributes/enum_set'
require_relative 'attributes/period'

module Torque
  module PostgreSQL
    module Attributes
      extend ActiveSupport::Concern

      # Configure enum_save_on_bang behavior
      included do
        class_attribute :enum_save_on_bang, instance_accessor: true
        self.enum_save_on_bang = Torque::PostgreSQL.config.enum.save_on_bang
      end

      module ClassMethods

        private

          # If the attributes are not loaded,
          def method_missing(method_name, *args, &block)
            return super unless define_attribute_methods
            self.send(method_name, *args, &block)
          end

          # Use local type map to identify attribute decorator
          def define_attribute_method(attribute)
            type = attribute_types[attribute]
            super unless TypeMap.lookup(type, self, attribute)
          end

      end
    end

    ActiveRecord::Base.include Attributes
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
torque-postgresql-1.0.1 lib/torque/postgresql/attributes.rb
torque-postgresql-1.0.0 lib/torque/postgresql/attributes.rb