2008-09-09 16 views
13

¿Cómo eliminar una cookie en los carriles que fue ajustada con un dominio comodín:¿Cómo se eliminan las cookies comodín en Rails?

cookies[:foo] = {:value => 'bar', :domain => '.acme.com'} 

Cuando, después de la docs, que hace:

cookies.delete :foo 

los registros dicen

Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT 

Observe que falta el dominio (parece usar los parámetros predeterminados para todo). Respetando el RFC, por supuesto, el navegador del sigue ahí, la cookie ->ctrl/cmd - L ->

javascript:alert(document.cookie); 

Voilà!

P: ¿Cuál es la forma "correcta" de eliminar dicha cookie?

+0

Thx! eso funciona a las mil maravillas ... también traté de agregar el enlace http://api.rubyonrails.org/classes/ActionController/Cookies.html "docs" pero eso puede haber fallado – Purfideas

Respuesta

20

Pase el: dominio en eliminar también. Aquí está la fuente de ese método:

# Removes the cookie on the client machine by setting the value to an empty string 
# and setting its expiration date into the past. Like []=, you can pass in an options 
# hash to delete cookies with extra data such as a +path+. 
def delete(name, options = {}) 
    options.stringify_keys! 
    set_cookie(options.merge("name" => name.to_s, "value" => "", "expires" => Time.at(0))) 
end 

Como se puede ver, sólo se establece una cookie de vacío con el nombre que le dio, que expira en 1969, y sin contenido. Pero se funde en cualquier otra opción que usted brinde, por lo que puede hacer:

cookies.delete :foo, :domain => '.acme.com' 

Y listo.

Cuestiones relacionadas