From 8126925447b6ba2e26c4bca4b4e10fb99803483b Mon Sep 17 00:00:00 2001 From: Prathamesh Sonpatki Date: Sat, 16 Jan 2016 12:47:26 +0530 Subject: Fix ActiveRecord::Relation#cache_key for loaded empty collection - Before this patch if we try to find cache_key of a loaded but empty collection it used to give error because of trying to call `updated_at` on `nil` value generated by `collection.max_by(×tamp_column).public_send(timestamp_column)`. - This commit fixes above error by checking if size is greater than zero or not. --- activerecord/lib/active_record/collection_cache_key.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'activerecord/lib') diff --git a/activerecord/lib/active_record/collection_cache_key.rb b/activerecord/lib/active_record/collection_cache_key.rb index 3c4ca3d116..b0e555038e 100644 --- a/activerecord/lib/active_record/collection_cache_key.rb +++ b/activerecord/lib/active_record/collection_cache_key.rb @@ -7,7 +7,9 @@ module ActiveRecord if collection.loaded? size = collection.size - timestamp = collection.max_by(×tamp_column).public_send(timestamp_column) + if size > 0 + timestamp = collection.max_by(×tamp_column).public_send(timestamp_column) + end else column_type = type_for_attribute(timestamp_column.to_s) column = "#{connection.quote_table_name(collection.table_name)}.#{connection.quote_column_name(timestamp_column)}" -- cgit v1.2.3