Sha256: 8c1dd40f1441b8f3f96c8b599952ff5d2127f68bf41f398c7ea06f83862d4288
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
require 'synchronisable/controller' require 'synchronisable/models/import' module Synchronisable module Model # Methods that will be attached to synchronisable model class. module Methods # Creates a new controller, that initiates synchronization # for this particular model and its associations. # If you have implemented `fetch` & `find` methods # in your model synchronizer, than it will be used if no data supplied. # # @overload sync(data, options) # @param data [Array<Hash>, Array<String>, Array<Integer>, String, Integer] synchronization data # @param options [Hash] synchronization options # @option options [Hash] :include assocations to be synchronized. # Use this option to override `has_one` & `has_many` assocations # defined in model synchronizer. # @overload sync(options) # @overload sync(data) # @overload sync # # # @see Synchronisable::Controller # # @example Supplying array of hashes with remote attributes # FooModel.sync([ # { # :id => '123', # :attr1 => 4, # :attr2 => 'blah' # }, # ... # ]) # # @example General usage # FooModel.sync(:includes => { # :assocation_model => :nested_association_model # }) # # @example Football domain use case # Match.sync(:includes => { # :match_players => :player # }) def sync(*args) Controller.call(self, *args) end # Count of import records for this model. def imports_count Import.where(synchronisable_type: self).count end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
synchronisable-1.0.4 | lib/synchronisable/model/methods.rb |
synchronisable-1.0.3 | lib/synchronisable/model/methods.rb |