首先,我有一个存储在会话中的购物车。购物车包含行项目(产品)。结帐按钮指向一个 Order.new 表单,其中 cart_id 传递给新订单(cart has_one order, order belongs_to cart)。
希望到目前为止一切顺利。
购物车参数包含一个 order_id,最初为 nil,直到用户点击结帐按钮。创建订单时,购物车中的 order_id 仍为 nil。如何在订单模型上使用 after_create 将购物车更新为现在具有有效的 order_id?
我的应用程序控制器中有一个 current_cart 方法,所以我可以在我的所有控制器中访问 current_cart,但我无法在模型中访问它 - > 因为它存储在会话中,我听说我不想要无论如何都要访问模型中的会话。
有人建议这样做吗?
如果我的描述不清楚,我会显示一些代码。
订单控制器.rb
def create
@cart = current_cart
@order = @cart.build_order(order_params)
if @order.save
redirect_to @order, notice: "The order has been successfully created. Below are your shipping options."
else
render action: "new"
end
end
导轨控制台
>> @order.cart.order_id
=> nil
这真的很重要吗?也许我是偏执狂,但我认为从购物车访问 order_id 以及从订单中访问 cart_id 是一个好习惯。
谢谢大家,帕特