对于Web系统来说并发处理是个无法回避问题我们来模仿个并发冲突情景:
1. 用户进入购物车页面看到共有5种商品
2. 管理员在后台维护商品列表将5种商品中种删除掉
3. 客户选中被删除掉商品添加到购物车
在这种情况下如果不作任何处理话将会产生个异常而我们要作是处理这个异常给用户显示个商品不存在提示
1. 首先我们需要修改StoreControlleradd_to_cart思路方法下面是add_to_cart思路方法代码:
def add_to_cart
product = Product.find(params[:id])
@cart = find_cart
@cart.add_product(product)
redirect_to(:action => 'display_cart')
rescue
logger.error("Attempt to access invalid product #{params[:id]}")
flash[:notice] = 'Invalid product'
redirect_to(:action => 'index')
end
2. 修改rails_appsdepotappviewsstore目录下index.rhtml文件:
在<div id="">这句后面添加下面代码:
<% @flash[:notice] -%>
<div id="notice">
<%= @flash[:notice] %></div>
<% end -%>
然后在按照前面提到3个步骤模拟个并发冲突情形就会在页面上表示信息了如下图:
最新评论