aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorErich Menge <erich.menge@me.com>2012-03-11 23:21:37 -0500
committerErich Menge <erich.menge@me.com>2012-03-12 12:29:30 -0500
commitbe623677a3b05696e70518072576588cbeaf83cd (patch)
tree68fddc34e037dce6fa00808a0760e00d0ef63fcb /activesupport
parent6c0d5a19a4e97be3d004997f6547ec19e6a22363 (diff)
downloadrails-be623677a3b05696e70518072576588cbeaf83cd.tar.gz
rails-be623677a3b05696e70518072576588cbeaf83cd.tar.bz2
rails-be623677a3b05696e70518072576588cbeaf83cd.zip
Allow retrieve_cache_key to work on collections such as ActiveRecord::Relation.
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache.rb1
-rw-r--r--activesupport/test/caching_test.rb4
2 files changed, 5 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb
index d7408eff9f..b9f196d7a9 100644
--- a/activesupport/lib/active_support/cache.rb
+++ b/activesupport/lib/active_support/cache.rb
@@ -91,6 +91,7 @@ module ActiveSupport
case
when key.respond_to?(:cache_key) then key.cache_key
when key.is_a?(Array) then key.map { |element| retrieve_cache_key(element) }.to_param
+ when key.respond_to?(:to_a) then retrieve_cache_key(key.to_a)
else key.to_param
end.to_s
end
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index b03865da93..ba027f1ff0 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -69,6 +69,10 @@ class CacheKeyTest < ActiveSupport::TestCase
def test_expand_cache_key_of_true
assert_equal 'true', ActiveSupport::Cache.expand_cache_key(true)
end
+
+ def test_expand_cache_key_of_array_like_object
+ assert_equal 'foo/bar/baz', ActiveSupport::Cache.expand_cache_key(%w{foo bar baz}.to_enum)
+ end
end
class CacheStoreSettingTest < ActiveSupport::TestCase