Permalink
Browse files

pass the association and connection to the scope method

  • Loading branch information...
1 parent 3b675f0 commit 8e6ef92fd9ede38aa435afeaef6370ff65191a0b @tenderlove tenderlove committed Feb 14, 2014
View
2 activerecord/lib/active_record/associations/association.rb
@@ -94,7 +94,7 @@ def scope
# actually gets built.
def association_scope
if klass
- @association_scope ||= AssociationScope.new(self).scope
+ @association_scope ||= AssociationScope.new.scope(self, klass.connection)
end
end
View
10 activerecord/lib/active_record/associations/association_scope.rb
@@ -1,18 +1,12 @@
module ActiveRecord
module Associations
class AssociationScope #:nodoc:
- attr_reader :association
-
- def initialize(association)
- @association = association
- end
-
- def scope
+ def scope(association, connection)
klass = association.klass
reflection = association.reflection
scope = klass.unscoped
owner = association.owner
- alias_tracker = AliasTracker.new klass.connection
+ alias_tracker = AliasTracker.new connection
scope.extending! Array(reflection.options[:extend])
add_constraints(scope, owner, klass, reflection, alias_tracker)
View
6 activerecord/test/cases/associations/association_scope_test.rb
@@ -6,8 +6,10 @@ module ActiveRecord
module Associations
class AssociationScopeTest < ActiveRecord::TestCase
test 'does not duplicate conditions' do
- association_scope = AssociationScope.new(Author.new.association(:welcome_posts))
- wheres = association_scope.scope.where_values.map(&:right)
+ association_scope = AssociationScope.new
+ scope = association_scope.scope(Author.new.association(:welcome_posts),
+ Author.connection)
+ wheres = scope.where_values.map(&:right)
assert_equal wheres.uniq, wheres
end
end

0 comments on commit 8e6ef92

Please sign in to comment.