Fix calling cache helper with a relation

This commit is contained in:
Lachlan Sylvester 2015-08-28 15:31:54 +10:00
parent 93a4dfaebc
commit a9c6a583b6
3 changed files with 24 additions and 3 deletions

View File

@ -229,10 +229,9 @@ module ActionView
def fragment_name_with_digest(name, virtual_path) #:nodoc:
virtual_path ||= @virtual_path
if virtual_path
names = Array(name.is_a?(Hash) ? controller.url_for(name).split("://").last : name)
name = controller.url_for(name).split("://").last if name.is_a?(Hash)
digest = Digestor.digest name: virtual_path, finder: lookup_context, dependencies: view_cache_dependencies
[ *names, digest ]
[ name, digest ]
else
name
end

View File

@ -0,0 +1,18 @@
require 'active_record_unit'
class RelationCacheTest < ActionView::TestCase
tests ActionView::Helpers::CacheHelper
def setup
@virtual_path = "path"
controller.cache_store = ActiveSupport::Cache::MemoryStore.new
end
def test_cache_relation_other
cache(Project.all){ concat("Hello World") }
assert_equal "Hello World", controller.cache_store.read("views/projects-#{Project.count}/")
end
def view_cache_dependencies; end
end

View File

@ -1,3 +1,7 @@
class Project < ActiveRecord::Base
has_and_belongs_to_many :developers, -> { uniq }
def self.collection_cache_key(collection = all, timestamp_column = :updated_at)
"projects-#{collection.count}"
end
end