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
- #get_ar_aggregate(aggr, reload = nil) ⇒ Object
- #get_attr_value(attr, reload = nil) ⇒ Object
- #get_belongs_to(assoc, reload = nil) ⇒ Object
- #get_has_many(assoc, reload = nil) ⇒ Object
- #get_non_ar_aggregate(attr, reload = nil) ⇒ Object
- #get_primary_key_value ⇒ Object
- #get_server_method(attr, reload = nil) ⇒ Object
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_value ⇒ Object
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 |