aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/reflection.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-06-03 15:57:41 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-06-24 19:21:30 +0900
commitcc93d0d47bb7b0773f4dbe0654bcd551e2762de8 (patch)
tree2b2173c1997822c39fa96054e3bc90a4222c9602 /activerecord/lib/active_record/reflection.rb
parent35a25c32da8541994274557e1c8f4a925b536acf (diff)
downloadrails-cc93d0d47bb7b0773f4dbe0654bcd551e2762de8.tar.gz
rails-cc93d0d47bb7b0773f4dbe0654bcd551e2762de8.tar.bz2
rails-cc93d0d47bb7b0773f4dbe0654bcd551e2762de8.zip
Extract `build_scope` and `predicate_builder` in `Reflection`
Diffstat (limited to 'activerecord/lib/active_record/reflection.rb')
-rw-r--r--activerecord/lib/active_record/reflection.rb17
1 files changed, 10 insertions, 7 deletions
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