diff options
author | Federico Martinez <fed.x.gibson@gmail.com> | 2018-06-07 01:05:30 -0300 |
---|---|---|
committer | Federico Martinez <fed.x.gibson@gmail.com> | 2018-10-15 20:38:12 -0300 |
commit | b1aeae0494c904db224b728330084ea173f38cf5 (patch) | |
tree | 2adb8fc7ce1b169c228717ef99686516035be2e9 /activerecord/test/cases/collection_cache_key_test.rb | |
parent | 134dab46e4e94d7e6e37cec43dca8183fe72aea6 (diff) | |
download | rails-b1aeae0494c904db224b728330084ea173f38cf5.tar.gz rails-b1aeae0494c904db224b728330084ea173f38cf5.tar.bz2 rails-b1aeae0494c904db224b728330084ea173f38cf5.zip |
Fix Collection cache key with limit and custom select (PG:AmbigousColumn: Error)
Change query to use alias name for timestamp_column to avoid ambiguity problems when using timestamp from subquery.
Diffstat (limited to 'activerecord/test/cases/collection_cache_key_test.rb')
-rw-r--r-- | activerecord/test/cases/collection_cache_key_test.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/test/cases/collection_cache_key_test.rb b/activerecord/test/cases/collection_cache_key_test.rb index 844b2b2162..483383257b 100644 --- a/activerecord/test/cases/collection_cache_key_test.rb +++ b/activerecord/test/cases/collection_cache_key_test.rb @@ -42,6 +42,20 @@ module ActiveRecord assert_equal last_developer_timestamp.to_s(ActiveRecord::Base.cache_timestamp_format), $3 end + test "cache_key for relation with custom select and limit" do + developers = Developer.where(salary: 100000).order(updated_at: :desc).limit(5) + developers_with_select = developers.select("developers.*") + last_developer_timestamp = developers.first.updated_at + + assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\z/, developers_with_select.cache_key) + + /\Adevelopers\/query-(\h+)-(\d+)-(\d+)\z/ =~ developers_with_select.cache_key + + assert_equal ActiveSupport::Digest.hexdigest(developers_with_select.to_sql), $1 + assert_equal developers.count.to_s, $2 + assert_equal last_developer_timestamp.to_s(ActiveRecord::Base.cache_timestamp_format), $3 + end + test "cache_key for loaded relation" do developers = Developer.where(salary: 100000).order(updated_at: :desc).limit(5).load last_developer_timestamp = developers.first.updated_at |