From 9d21a7fc50496c1dabbf0b1ad51094a6e6dc83dc Mon Sep 17 00:00:00 2001 From: Lucjan Suski Date: Tue, 15 Dec 2015 14:32:34 +0100 Subject: Pass SQL group by values when including scoped association Fixes problem when added `group()` in association scope was lost in eager loaded association. --- activerecord/test/cases/associations/eager_test.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 0c09713971..622c984b3b 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -1242,6 +1242,19 @@ class EagerAssociationTest < ActiveRecord::TestCase assert_equal projects.last.mentor.developers.first.contracts, projects.last.developers.last.contracts end + def test_eager_load_with_group_clause + assert_nothing_raised(ActiveRecord::StatementInvalid) do + subclass = Class.new(ActiveRecord::Base) do + def self.name; "Author"; end + self.table_name = "authors" + has_many :posts_ordered_by_comments_tags_count, -> { joins('LEFT JOIN comments ON comments.post_id = posts.id').order("SUM(comments.tags_count)").group('posts.id') }, :class_name => "Post" + end + + posts = subclass.includes(:posts_ordered_by_comments_tags_count).first.posts_ordered_by_comments_tags_count + assert_equal subclass.first.posts_ordered_by_comments_tags_count, posts + end + end + test "scoping with a circular preload" do assert_equal Comment.find(1), Comment.preload(:post => :comments).scoping { Comment.find(1) } end -- cgit v1.2.3