Module: ShardedDatabase::HasManyAssociation

Defined in:
lib/sharded_database/has_many_association.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
7
8
# File 'lib/sharded_database/has_many_association.rb', line 4

def self.included(klass)
  klass.class_eval do
    alias_method_chain :initialize, :delegated_connection
  end
end

Instance Method Details

#initialize_with_delegated_connection(owner, reflection) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/sharded_database/has_many_association.rb', line 10

def initialize_with_delegated_connection(owner, reflection)
  if @connection_class = reflection.options[:connection_class]
    @original_class = reflection.klass
    reflection.metaclass.class_eval %{
      def klass
        ModelWithConnection.borrow_connection(#{@original_class.name}, #{@connection_class.name})
      end
    }
  end
  initialize_without_delegated_connection(owner, reflection)
end