diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-06-03 15:57:41 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-06-24 19:21:30 +0900 |
commit | cc93d0d47bb7b0773f4dbe0654bcd551e2762de8 (patch) | |
tree | 2b2173c1997822c39fa96054e3bc90a4222c9602 /activerecord/lib/active_record/reflection.rb | |
parent | 35a25c32da8541994274557e1c8f4a925b536acf (diff) | |
download | rails-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.rb | 17 |
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 |