Ruby on Railsでクッキーにドメインやパスを指定すると、cookies.deleteで削除できなくなる。
rails 1.1.6 / actionpack-1.12.5 で。
なんだかクッキーが消えないと思ったら、domainを指定していたせいでした。以下のアプリケーションで確認しました。
cook_controller.rb
class CookController < ApplicationController def index @c = cookies end # クッキー保存 def save cookies[:aaa] = { :value => "123" } cookies[:bbb] = { :value => "456", :path => "/cook" } cookies[:ccc] = { :value => "789", :domain => ".default.local" } redirect_to "/cook" end # クッキー削除 def delete cookies.delete :aaa # pathやdomainが指定されているのでcookies.deleteでは消えない。 cookies.delete :bbb cookies.delete :ccc # こっちなら消える。 # cookies[:bbb] = {:value =>"", :path => "/cook", :expires => Time.at(0) } # cookies[:ccc] = {:value =>"", :domain => ".default.local", :expires => Time.at(0) } redirect_to "/cook" end end
cook/index.rhtml
aaa: <%= @c[:aaa] %><br/> bbb: <%= @c[:bbb] %><br/> ccc: <%= @c[:ccc] %><br/> <%= link_to "delete", :action => "delete" %><br/> <%= link_to "save", :action => "save" %><br/> <%= link_to "index", :action => "index" %><br/>