Как удалить файлы cookie в Rails?

Как удалить файл cookie в рельсах, который был установлен с доменом wild card:

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

Когда, следуя docs, вы делаете:

cookies.delete :foo

logs говорят

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

Обратите внимание, что домен отсутствует (кажется, используется значение по умолчанию параметры для всего). Уважение RFC, конечно, cookie все еще есть, Браузер → ctrl/cmd - L

javascript:alert(document.cookie);

Вуаля!

Q: Какой "правильный" способ удалить такой файл cookie?

Ответы

Ответ 1

Передайте: domain и удалите. Здесь источник этого метода:

# 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

Как вы можете видеть, он просто устанавливает пустой файл cookie с именем, которое вы дали, истекает в 1969 году и без содержимого. Но он сливается с любыми другими параметрами, которые вы даете, поэтому вы можете делать:

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

И вы настроены.