From cc93d0d47bb7b0773f4dbe0654bcd551e2762de8 Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Sat, 3 Jun 2017 15:57:41 +0900 Subject: Extract `build_scope` and `predicate_builder` in `Reflection` --- activerecord/lib/active_record/reflection.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'activerecord/lib/active_record/reflection.rb') diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb index e8ee8279fd..c4b58386fa 100644 --- a/activerecord/lib/active_record/reflection.rb +++ b/activerecord/lib/active_record/reflection.rb @@ -187,8 +187,7 @@ module ActiveRecord def join_scopes(table, predicate_builder) # :nodoc: if scope - [ActiveRecord::Relation.create(klass, table, predicate_builder) - .instance_exec(&scope)] + [build_scope(table, predicate_builder).instance_exec(&scope)] else [] end @@ -200,11 +199,7 @@ module ActiveRecord scope.joins_values = scope.left_outer_joins_values = [].freeze } else - relation = ActiveRecord::Relation.create( - klass, - table, - predicate_builder, - ) + relation = build_scope(table, predicate_builder) klass.send(:build_default_scope, relation) end end @@ -287,6 +282,14 @@ module ActiveRecord JoinKeys.new(join_pk(association_klass), join_fk) end + def build_scope(table, predicate_builder = predicate_builder(table)) + Relation.create(klass, table, predicate_builder) + end + + def predicate_builder(table) + PredicateBuilder.new(TableMetadata.new(klass, table)) + end + protected def actual_source_reflection # FIXME: this is a horrible name self -- cgit v1.2.3