diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-12-28 14:24:52 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-12-28 14:24:52 +0530 |
commit | b95cc72429f83304b8e882c3637dfb3135a571ed (patch) | |
tree | 2278545c9a23419987e45d3b01fe76f601f6a876 | |
parent | 92c982d973c3e3125982309ff8bb6c22608696c5 (diff) | |
download | rails-b95cc72429f83304b8e882c3637dfb3135a571ed.tar.gz rails-b95cc72429f83304b8e882c3637dfb3135a571ed.tar.bz2 rails-b95cc72429f83304b8e882c3637dfb3135a571ed.zip |
Raise ArgumentError when trying to merge relations of different classes
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/relations_test.rb | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index ff10df96f2..ef480cfb29 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -13,6 +13,8 @@ module ActiveRecord end def merge(r) + raise ArgumentError, "Cannot merge a #{r.klass.name} relation with #{@klass.name} relation" if r.klass != @klass + joins(r.relation.joins(r.relation)). group(r.send(:group_clauses).join(', ')). order(r.send(:order_clauses).join(', ')). diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index 61fcc7ca46..cf6708cc8b 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -353,4 +353,9 @@ class RelationTest < ActiveRecord::TestCase assert_queries(2) { assert posts.first.author } end end + + def test_invalid_merge + assert_raises(ArgumentError) { Post.scoped & Developer.scoped } + end + end |