From 29cf0dd9f48782c94de924a11b4fd1ad7b939dc5 Mon Sep 17 00:00:00 2001 From: Prathamesh Sonpatki Date: Thu, 14 Jan 2016 10:21:28 +0530 Subject: Fix AR::Relation#cache_key to remove select scope added by user - We don't need the select scope added by user as we only want to max timestamp and size of the collection. So we already know which columns to select. - Additionally having user defined columns in select scope blows the cache_key method with PostGreSQL because it needs all `selected` columns in the group_by clause or aggregate function. - Fixes #23038. --- activerecord/test/cases/collection_cache_key_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/collection_cache_key_test.rb b/activerecord/test/cases/collection_cache_key_test.rb index 6b34979e4a..a2874438c1 100644 --- a/activerecord/test/cases/collection_cache_key_test.rb +++ b/activerecord/test/cases/collection_cache_key_test.rb @@ -79,5 +79,11 @@ module ActiveRecord developers = Developer.offset(20) assert_match(/\Adevelopers\/query-(\h+)-0\Z/, developers.cache_key) end + + test "cache_key with a relation having selected columns" do + developers = Developer.select(:salary) + + assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key) + end end end -- cgit v1.2.3