module Synchronisable::Model::ClassMethods
Constants
- SYNCHRONIZER_SUFFIX
Public Instance Methods
synchronisable(*args)
click to toggle source
Declare this on your model class to make it synchronisable. After that you can call {Synchronisable::Model::Methods#sync} to start model synchronization.
@overload synchronisable(klass, options)
@param klass [Class] synchronizer class to be used @param options [Hash] describes behavior of synchronisable model @option options [Class] :synchronizer class that provides synchronization configuration
@overload synchronisable(options) @overload synchronisable
@see Synchronisable::Synchronizer
@see Synchronisable::Model::Methods
@example Common usage
class FooModel < ActiveRecord::Base synchronisable BarSynchronizer end
# File lib/synchronisable/model.rb, line 31 def synchronisable(*args) extend Synchronisable::Model::Methods extend Synchronisable::Model::Scopes class_attribute :synchronizer options = args.extract_options! set_defaults(options) set_synchronizer(args, options) has_one :import, as: :synchronisable, class_name: 'Synchronisable::Import', dependent: options[:dependent] end
synchronisable?()
click to toggle source
# File lib/synchronisable/model.rb, line 48 def synchronisable? false end
Private Instance Methods
find_synchronizer()
click to toggle source
# File lib/synchronisable/model.rb, line 63 def find_synchronizer const_name = "#{self.name.demodulize}#{SYNCHRONIZER_SUFFIX}" const_name.safe_constantize end
set_defaults(options)
click to toggle source
# File lib/synchronisable/model.rb, line 54 def set_defaults(options) options[:dependent] ||= Synchronisable.config.dependent_import end
set_synchronizer(args, options)
click to toggle source
# File lib/synchronisable/model.rb, line 58 def set_synchronizer(args, options) self.synchronizer = args.first || options[:synchronizer] || find_synchronizer || SynchronizerDefault end