2008年11月11日火曜日

カートに追加できない

session.rbにclass Session
def []

 Cartのinitializeに来ない。
為にしadd_productで@itemsがnilならCart.newを。
で、

if @items == nil
then
@items = Cart.new
end

って書いたら、NetBeansが電気マークを出して、なにやらクリックすると、

@items = Cart.new if @items == nil

って直してくれた。ありがとうNetBeans!

追ってみると、session[:cart]がnilじゃない?っぽい。
でも session[:cart] ||= Cart.new じゃブレークポイントが張れない。そこでsession[:cart]がnilじゃないかどうか、適当なロジックを足して確認。すると、本当にsession[:cart]がnilじゃない! なんで?

とりあえずお腹がすいたので晩飯を食いに出かけたその道すがら、突然思いついたことが。「あ!わかった!」と、思わず声を上げてしまいました。cockieだ。最近MacBookのSafari、リセットしてない。だからずいぶん前にやったNetBeansに付いてくるサンプルのDepot動かしたときのsessionのcockieが残ってんじゃないか?

さっそく戻って試してみると、ほらね。やっぱそうじゃん。まずいんじゃない?ブラウザが終了してもセッションが切れないなんて。Bloggerは? (とここでSafariを一旦終了) 大丈夫だね。ちゃんとクリアされて、再度ログインから始まる。当たり前か。

念のため、もう一度、サンプル版のDepotを動かしてみる。あ、マイグレーションからか。大丈夫か? やってみよう。あれ、サンプルのデータが入らない。カートは空。追加は出来る。ブラウザ終了して再度実行。カートは空。大丈夫じゃん。どういうこと? 

データベースを確認してみると、マイグレーションで「バージョン0へ」をやってもデータが残ったまま。NetBeansからやってるからか? コンソールでやってみよう。

rake db:migrate VERSION=0

同じだ。もういい、あきらめよう。とりあえず原因はわからないけど、cockieが残ってしまい、session[:cart]がうまく動かなかったと。



0 件のコメント: