今天看《agile web development with rails》,觉得他的购物车是不是有点问题,写法如下:
class ApplicationController < ActionController::Base
protect_from_forgery
private
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
就是每当调用current_cart
的时候,如果 session 没有cart_id
的时候就创建一个 Cart.那如果多人登录的情况,不就一堆的购物车了?是不是用cookies
存会更好一些?但是存在 cookies 里又有一个问,如果别人修改 cookies 里的 cart 值,不就可以看到别人的购物车里有些什么了?
还有一个疑问是,不登录,把商品加入购物车,然后登录了,就把商品加入该帐号的购物车,是不是也把cart_id
放到 cookies 里,登录的时候,又把本来的cart_id
放到user
的cart
中?感觉这购物车,一多人访问起来,总会生成一堆购物车,强迫症的我看着很辛苦,但是似乎没有更好的方案了。