Module: Protoable::Fields

Defined in:
lib/protoable/fields.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

._protobuf_map_columns(klass) ⇒ Object

Map out the columns for future reference on type conversion



30
31
32
33
34
35
36
# File 'lib/protoable/fields.rb', line 30

def self._protobuf_map_columns(klass)
  return unless klass.table_exists?
  klass.columns.map do |column|
    klass._protobuf_columns[column.name.to_sym] = column
    klass._protobuf_column_types[column.type.to_sym] << column.name.to_sym
  end
end

.extended(klass) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/protoable/fields.rb', line 5

def self.extended(klass)
  klass.extend Protoable::Fields::ClassMethods
  klass.__send__(:include, Protoable::InheritableClassInstanceVariables)

  klass.class_eval do
    class << self
      attr_accessor :_protobuf_columns, :_protobuf_column_types,
        :_protobuf_column_transformers, :_protobuf_field_converters
    end

    @_protobuf_columns = {}
    @_protobuf_column_types = Hash.new { |h,k| h[k] = [] }
    @_protobuf_column_transformers = {}
    @_protobuf_field_converters = {}

    # NOTE: Make sure each inherited object has the database layout
    inheritable_attributes :_protobuf_columns, :_protobuf_column_types,
      :_protobuf_field_converters, :_protobuf_column_transformers
  end

  _protobuf_map_columns(klass)
end