Module: Octopus::AssociationShardTracking

Defined in:
lib/octopus/association_shard_tracking.rb

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



3
4
5
# File 'lib/octopus/association_shard_tracking.rb', line 3

def self.extended(base)
  base.send(:include, InstanceMethods)
end

Instance Method Details

#default_octopus_opts(options) ⇒ Object



50
51
52
53
# File 'lib/octopus/association_shard_tracking.rb', line 50

def default_octopus_opts(options)
  options[:before_add] = [ :connection_on_association=, options[:before_add] ].compact.flatten
  options[:before_remove] = [ :connection_on_association=, options[:before_remove] ].compact.flatten
end

#has_and_belongs_to_many(association_id, options = {}, &extension) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/octopus/association_shard_tracking.rb', line 29

def has_and_belongs_to_many(association_id, scope = nil, options = {}, &extension)
  if options == {} && scope.is_a?(Hash)
    default_octopus_opts(scope)
  else
    default_octopus_opts(options)
  end
  super
end

#has_many(association_id, options = {}, &extension) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/octopus/association_shard_tracking.rb', line 20

def has_many(association_id, scope = nil, options = {}, &extension)
  if options == {} && scope.is_a?(Hash)
    default_octopus_opts(scope)
  else
    default_octopus_opts(options)
  end
  super
end