Module: Protoable::Columns

Defined in:
lib/protobuf/activerecord/protoable/columns.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



26
27
28
29
30
31
32
# File 'lib/protobuf/activerecord/protoable/columns.rb', line 26

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

.included(klass) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/protobuf/activerecord/protoable/columns.rb', line 5

def self.included(klass)
  klass.extend Protoable::Columns::ClassMethods
  klass.__send__(:include, ::Heredity::InheritableClassInstanceVariables)

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

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

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

  _protobuf_map_columns(klass)
end