Module: Aquasync::AggregatedMethods::ClassMethods
- Defined in:
- lib/models/concerns/aquasync_aggregated_methods.rb
Instance Method Summary collapse
-
#append_attributes(delta, opts) ⇒ Object
Handle :append_attributes option.
-
#aq_commit_deltas(deltas, opts = {}) ⇒ NilClass
DeltasAggregator requirement.
-
#aq_deltas(ust, opts = {}) ⇒ Array<Aquasync::Base>
DeltasAggregator requirement.
- #begin_of_association_chain(opts) ⇒ Object
-
#commit_delta(delta, opts) ⇒ Object
commits a delta.
- #create_record_from_delta(delta, opts) ⇒ Object
Instance Method Details
#append_attributes(delta, opts) ⇒ Object
Handle :append_attributes option.
37 38 39 40 41 42 43 44 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 37 def append_attributes(delta, opts) return delta unless opts[:append_attributes] atr = opts[:append_attributes] klass = self.name delta.merge!(atr[:all]) if atr[:all] delta.merge!(atr[klass]) if atr[klass] delta end |
#aq_commit_deltas(deltas, opts = {}) ⇒ NilClass
DeltasAggregator requirement
28 29 30 31 32 33 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 28 def aq_commit_deltas(deltas, opts = {}) deltas.each {|d| delta = append_attributes(d, opts) commit_delta(delta, opts) } end |
#aq_deltas(ust, opts = {}) ⇒ Array<Aquasync::Base>
DeltasAggregator requirement
22 23 24 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 22 def aq_deltas(ust, opts = {}) begin_of_association_chain(opts).where(:ust.gt => ust) end |
#begin_of_association_chain(opts) ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 62 def begin_of_association_chain(opts) model = opts[:begin_of_association_chain] if(model) # current_user Book => current_user.books model.send(self.name.downcase.pluralize) else self end end |
#commit_delta(delta, opts) ⇒ Object
commits a delta.
48 49 50 51 52 53 54 55 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 48 def commit_delta(delta, opts) record = begin_of_association_chain(opts).find_by(gid: delta["gid"]) if record record.resolve_conflict(delta) else create_record_from_delta(delta, opts) end end |
#create_record_from_delta(delta, opts) ⇒ Object
58 59 60 |
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 58 def create_record_from_delta(delta, opts) begin_of_association_chain(opts).create!(delta) end |