From d8e6dc9cf12096908a7a53dec07a397ba23b1088 Mon Sep 17 00:00:00 2001 From: Olek Janiszewski Date: Wed, 23 Nov 2011 18:06:15 +0100 Subject: Fix #3737 AS::expand_cache_key generates wrong key in certain situations `cache_key` method is never called when the argument is a 1-element array with something that responds to `cache_key` --- activesupport/lib/active_support/cache.rb | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'activesupport/lib/active_support') diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index 2bf24558a6..cfd1a6dbe3 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -81,16 +81,10 @@ module ActiveSupport end expanded_cache_key << - if key.respond_to?(:cache_key) - key.cache_key - elsif key.is_a?(Array) - if key.size > 1 - key.collect { |element| expand_cache_key(element) }.to_param - else - key.first.to_param - end - elsif key - key.to_param + case + when key.respond_to?(:cache_key) then key.cache_key + when key.is_a?(Array) then key.map { |element| expand_cache_key(element) }.to_param + when key then key.to_param end.to_s expanded_cache_key -- cgit v1.2.3 From a650dd05f82028e8d1310f1b68b7bc430ea47dcf Mon Sep 17 00:00:00 2001 From: Olek Janiszewski Date: Wed, 23 Nov 2011 18:11:36 +0100 Subject: Fix #3737 AS::expand_cache_key generates wrong key in certain situations (part 2) `nil` and `false` both expand to `""` (empty string), while `true` expands to `"true"`; `false` should expand to `"false"` --- activesupport/lib/active_support/cache.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'activesupport/lib/active_support') diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index cfd1a6dbe3..12eeff4f4b 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -84,7 +84,7 @@ module ActiveSupport case when key.respond_to?(:cache_key) then key.cache_key when key.is_a?(Array) then key.map { |element| expand_cache_key(element) }.to_param - when key then key.to_param + else key.to_param end.to_s expanded_cache_key -- cgit v1.2.3