aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/spawn_methods.rb
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2015-11-17 14:57:48 +0000
committerAndrew White <andyw@pixeltrix.co.uk>2015-11-17 14:57:48 +0000
commit5d1d5f2840cd9aabd87e9dd4a110578d6c30db47 (patch)
treeff3dfd5d40a6ea4f63f528874e3215b783dedfd7 /activerecord/lib/active_record/relation/spawn_methods.rb
parent35ca78a07c8b09ed81f09fe227e37c59cf13bb6f (diff)
downloadrails-5d1d5f2840cd9aabd87e9dd4a110578d6c30db47.tar.gz
rails-5d1d5f2840cd9aabd87e9dd4a110578d6c30db47.tar.bz2
rails-5d1d5f2840cd9aabd87e9dd4a110578d6c30db47.zip
Raise ArgumentError when passing a truthy value to merge
In b71e08f we started raising when nil or false was passed to merge to fix #12264, however we should also do this for truthy values that are invalid like true.
Diffstat (limited to 'activerecord/lib/active_record/relation/spawn_methods.rb')
-rw-r--r--activerecord/lib/active_record/relation/spawn_methods.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/spawn_methods.rb b/activerecord/lib/active_record/relation/spawn_methods.rb
index ee509b98d4..67d7f83cb4 100644
--- a/activerecord/lib/active_record/relation/spawn_methods.rb
+++ b/activerecord/lib/active_record/relation/spawn_methods.rb
@@ -40,10 +40,12 @@ module ActiveRecord
def merge!(other) # :nodoc:
if other.is_a?(Hash)
Relation::HashMerger.new(self, other).merge
+ elsif other.is_a?(Relation)
+ Relation::Merger.new(self, other).merge
elsif other.respond_to?(:to_proc)
instance_exec(&other)
else
- Relation::Merger.new(self, other).merge
+ raise ArgumentError, "#{other.inspect} is not an ActiveRecord::Relation"
end
end