diff options
author | Neeraj Singh <neerajdotname@gmail.com> | 2013-05-29 23:36:19 -0400 |
---|---|---|
committer | Neeraj Singh <neerajdotname@gmail.com> | 2013-06-22 08:33:03 +0530 |
commit | 32420bd4bcf20dc21e925474cbb0ac2b46722b80 (patch) | |
tree | 6a549374c68cbec52f22048245f39c94e5c5247c /activerecord/test/cases/relation_test.rb | |
parent | 88beaee64eeb29bec4a3477dedf6dbbb08b2e108 (diff) | |
download | rails-32420bd4bcf20dc21e925474cbb0ac2b46722b80.tar.gz rails-32420bd4bcf20dc21e925474cbb0ac2b46722b80.tar.bz2 rails-32420bd4bcf20dc21e925474cbb0ac2b46722b80.zip |
flatten merged join_values before building the joins
fixes #10669
While joining_values special treatment is given to string values.
By flattening the array it ensures that string values are detected
as strings and not arrays.
Diffstat (limited to 'activerecord/test/cases/relation_test.rb')
-rw-r--r-- | activerecord/test/cases/relation_test.rb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb index 55fd068d37..693b36f35c 100644 --- a/activerecord/test/cases/relation_test.rb +++ b/activerecord/test/cases/relation_test.rb @@ -176,7 +176,7 @@ module ActiveRecord assert_equal ['foo = bar'], relation.where_values end - def test_relation_merging_with_merged_joins + def test_relation_merging_with_merged_joins_as_symbols special_comments_with_ratings = SpecialComment.joins(:ratings) posts_with_special_comments_with_ratings = Post.group("posts.id").joins(:special_comments).merge(special_comments_with_ratings) assert_equal 3, authors(:david).posts.merge(posts_with_special_comments_with_ratings).count.length @@ -190,6 +190,13 @@ module ActiveRecord assert_equal false, post.respond_to?(:title), "post should not respond_to?(:body) since invoking it raises exception" end + def test_relation_merging_with_merged_joins_as_strings + join_string = "LEFT OUTER JOIN #{Rating.quoted_table_name} ON #{SpecialComment.quoted_table_name}.id = #{Rating.quoted_table_name}.comment_id" + special_comments_with_ratings = SpecialComment.joins join_string + posts_with_special_comments_with_ratings = Post.group("posts.id").joins(:special_comments).merge(special_comments_with_ratings) + assert_equal 3, authors(:david).posts.merge(posts_with_special_comments_with_ratings).count.length + end + end class RelationMutationTest < ActiveSupport::TestCase |