def update_association_cache_for(association, target, action=:add)
    return unless association_cached? association
    case action
    when :add
      return if @association_cache[association].collection.include? target
      @association_cache[association].push(target) # don't use `<<` because overriden method in AssociationCollection gets called instead
    when :delete      
      @association_cache[association].delete target
    end
  end
def update_association_cache_for(association, target, action=:add)
    return unless association_cached? association
    case action
    when :add
      return if @association_cache[association].collection.include? target
      @association_cache[association].push(target) # don't use `<<` because overriden method in AssociationCollection gets called instead
    when :delete      
      @association_cache[association].delete target
    end
  end
Updates an association cache entry if it's been initialized