diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 90b5cb3b8f19d..2bc2811077f1d 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,9 @@ +* Merge joins from association scopes when using .includes() or .joins() + + Fixes #12492. + + *Mike Campbell* + * Prevent the inversed association from being reloaded on save. Fixes #9499. diff --git a/activerecord/lib/active_record/associations/preloader/association.rb b/activerecord/lib/active_record/associations/preloader/association.rb index 69b65982b3970..7bd3033d94285 100644 --- a/activerecord/lib/active_record/associations/preloader/association.rb +++ b/activerecord/lib/active_record/associations/preloader/association.rb @@ -118,6 +118,7 @@ def build_scope scope.select! preload_values[:select] || values[:select] || table[Arel.star] scope.includes! preload_values[:includes] || values[:includes] + scope.joins! preload_values[:joins] || values[:joins] if preload_values.key? :order scope.order! preload_values[:order] diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 9c9690215ab81..6bbfec588e7f7 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -400,6 +400,9 @@ def joins(*args) end def joins!(*args) # :nodoc: + args.reject!(&:blank?) + args.flatten! + self.joins_values += args self end