diff --git a/app/models/block.rb b/app/models/block.rb index 36b173c..421014a 100644 --- a/app/models/block.rb +++ b/app/models/block.rb @@ -192,7 +192,7 @@ class Block < ActiveRecord::Base # Override in your subclasses. # Define which events and context should cause the block cache to expire - # Possible events are: :article, :profile, :friendship, :category + # Possible events are: :article, :profile, :friendship, :category, :role_assignment # Possible contexts are: :profile, :environment def self.expire_on { diff --git a/app/sweepers/role_assignment_sweeper.rb b/app/sweepers/role_assignment_sweeper.rb index 0b58b96..c4dc788 100644 --- a/app/sweepers/role_assignment_sweeper.rb +++ b/app/sweepers/role_assignment_sweeper.rb @@ -14,19 +14,21 @@ protected def expire_caches(role_assignment) expire_cache(role_assignment.accessor) - expire_cache(role_assignment.resource) if role_assignment.resource.respond_to?(:cache_keys) + expire_cache(role_assignment.resource) if role_assignment.resource.kind_of?(Profile) end def expire_cache(profile) per_page = Noosfero::Constants::PROFILE_PER_PAGE - profile.cache_keys(:per_page => per_page).each { |ck| - expire_timeout_fragment(ck) - } + + profile.cache_keys(:per_page => per_page).each { |ck| expire_timeout_fragment(ck) } + expire_timeout_fragment(profile.members_cache_key(:per_page => per_page)) profile.blocks_to_expire_cache.each { |block| blocks = profile.blocks.select{|b| b.kind_of?(block)} BlockSweeper.expire_blocks(blocks) } + + expire_blocks_cache(profile, [:role_assignment]) end end diff --git a/plugins/people_block/lib/members_block.rb b/plugins/people_block/lib/members_block.rb index 37c025a..a68a134 100644 --- a/plugins/people_block/lib/members_block.rb +++ b/plugins/people_block/lib/members_block.rb @@ -47,4 +47,8 @@ class MembersBlock < PeopleBlockBase } end + def self.expire_on + {:profile => [:role_assignment]} + end + end -- libgit2 0.21.2