当我尝试创建line_item时,我收到此错误:ActiveRecord :: RecordNotSaved(除非保存父级,否则无法调用create)。
我错的时候?如何解决?
line_items控制器
def create
@product = Product.find_by_id(params[:line_item][:product_id])
@cart = current_cart
@line_item = @cart.add_product(line_item_params)
end
购物车型号
has_many :line_items, dependent: :destroy
def add_product(line_item_args)
current_line_item.quantity += line_item_args[:quantity].to_i
current_line_item.save
if current_item
current_item.quantity += line_item.quantity.to_i
else
current_item = line_items.create!(line_item_args)
end
current_item
end
UPD
来自应用程序控制器的工作辅助方法current_cart。问题在于它。
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
答案 0 :(得分:0)
我不知道你是如何使用购物车的,但我确信当前的购物车不会在de数据库中持久存在,请检查它是否真实。