轨。在保存孩子之前保存父母

时间:2016-11-28 09:37:07

标签: ruby-on-rails

当我尝试创建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

1 个答案:

答案 0 :(得分:0)

我不知道你是如何使用购物车的,但我确信当前的购物车不会在de数据库中持久存在,请检查它是否真实。