Module: ActiveRecordShards::DefaultReplicaPatches::Rails41HasAndBelongsToManyBuilderExtension

Defined in:
lib/active_record_shards/default_replica_patches.rb

Overview

in rails 4.1+, they create a join class that's used to pull in records for HABTM. this simplifies the hell out of our existence, because all we have to do is inerit on-replica-by-default down from the parent now.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



139
140
141
142
143
144
# File 'lib/active_record_shards/default_replica_patches.rb', line 139

def self.included(base)
  base.class_eval do
    alias_method :through_model_without_inherit_default_replica_from_lhs, :through_model
    alias_method :through_model, :through_model_with_inherit_default_replica_from_lhs
  end
end

Instance Method Details

#through_model_with_inherit_default_replica_from_lhsObject



146
147
148
149
150
151
152
153
154
155
# File 'lib/active_record_shards/default_replica_patches.rb', line 146

def through_model_with_inherit_default_replica_from_lhs
  model = through_model_without_inherit_default_replica_from_lhs
  def model.on_replica_by_default?
    left_reflection.klass.on_replica_by_default?
  end

  # also transfer the sharded-ness of the left table to the join model
  model.not_sharded unless model.left_reflection.klass.is_sharded?
  model
end