Module: Protobuf::ActiveRecord::AttributeMethods::ClassMethods

Defined in:
lib/protobuf/active_record/attribute_methods.rb

Instance Method Summary collapse

Instance Method Details

#alias_field(field_alias, attribute) ⇒ Object



9
10
11
12
13
14
# File 'lib/protobuf/active_record/attribute_methods.rb', line 9

def alias_field(field_alias, attribute)
  alias_attribute field_alias, attribute

  attribute_from_proto attribute, fetch_attribute_alias_from_proto(attribute, field_alias)
  field_from_record field_alias, fetch_field_alias_from_record(attribute, field_alias)
end

#fetch_attribute_alias_from_proto(attribute, field_alias) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/protobuf/active_record/attribute_methods.rb', line 16

def fetch_attribute_alias_from_proto(attribute, field_alias)
  lambda do |proto|
    value = proto.__send__(:"#{field_alias}!")
    value ||= proto.__send__(:"#{attribute}!") if proto.respond_to?(attribute)

    self._protobuf_convert_fields_to_attributes(attribute, value)
  end
end

#fetch_field_alias_from_record(attribute, field_aliasd) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/protobuf/active_record/attribute_methods.rb', line 25

def fetch_field_alias_from_record(attribute, field_aliasd)
  lambda do |record|
    value = record.__send__(field_alias)

    self._protobuf_convert_attributes_to_fields(attribute, value)
  end
end