Module: ReactiveRecord::Getters

Included in:
Base
Defined in:
lib/reactive_record/active_record/reactive_record/getters.rb

Overview

creates getters for various method types TODO replace sync_attribute calls with direct logic

Instance Method Summary collapse

Instance Method Details

#get_ar_aggregate(aggr, reload = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 40

def get_ar_aggregate(aggr, reload = nil)
  getter_common(aggr.attribute, reload) do |has_key, attr|
    if new?
      @attributes[attr] = aggr.klass.new.backing_record.link_aggregate(attr, self)
    else
      sync_ignore_dummy attr, new_from_vector(aggr.klass, self, *vector, attr), has_key
    end
  end
end

#get_attr_value(attr, reload = nil) ⇒ Object



24
25
26
27
28
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 24

def get_attr_value(attr, reload = nil)
  non_relationship_getter_common(attr, reload) do
    sync_attribute attr, convert(attr, model.columns_hash[attr][:default])
  end
end

#get_belongs_to(assoc, reload = nil) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 5

def get_belongs_to(assoc, reload = nil)
  getter_common(assoc.attribute, reload) do |has_key, attr|
    return if new?
    value = Base.fetch_from_db([@model, [:find, id], attr, @model.primary_key]) if id.present?
    value = find_association(assoc, value)
    sync_ignore_dummy attr, value, has_key
  end&.cast_to_current_sti_type
end

#get_has_many(assoc, reload = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 14

def get_has_many(assoc, reload = nil)
  getter_common(assoc.attribute, reload) do |_has_key, attr|
    if new?
      @attributes[attr] = Collection.new(assoc.klass, @ar_instance, assoc)
    else
      sync_attribute attr, Collection.new(assoc.klass, @ar_instance, assoc, *vector, attr)
    end
  end
end

#get_non_ar_aggregate(attr, reload = nil) ⇒ Object



50
51
52
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 50

def get_non_ar_aggregate(attr, reload = nil)
  non_relationship_getter_common(attr, reload)
end

#get_primary_key_valueObject



30
31
32
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 30

def get_primary_key_value
  non_relationship_getter_common(model.primary_key, false)
end

#get_server_method(attr, reload = nil) ⇒ Object



34
35
36
37
38
# File 'lib/reactive_record/active_record/reactive_record/getters.rb', line 34

def get_server_method(attr, reload = nil)
  non_relationship_getter_common(attr, reload) do |has_key|
    sync_ignore_dummy attr, Base.load_from_db(self, *(vector ? vector : [nil]), attr), has_key
  end
end