Wenn ich versuche, line_item zu erstellen, erhalte ich diesen Fehler: ActiveRecord :: RecordNotSaved (Sie können create nicht aufrufen, wenn das übergeordnete Element nicht gespeichert wird).Schienen. Eltern speichern, bevor Kind speichern
Wenn ich falsch liege? Wie repariere es?
LINE_ITEMS Controller
def create
@product = Product.find_by_id(params[:line_item][:product_id])
@cart = current_cart
@line_item = @cart.add_product(line_item_params)
end
Wagen Modell
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
Arbeitshilfsmethode current_cart von Anwendungssteuerung. Problem war drin.
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
Speichern/zuerst Einkaufswagen erstellen?!? – Fallenhero
Ich versuche hinzufügen nach_save: add_product im Warenkorb Modell, aber der Fehler ist weiterhin – alexin
after_save: add_product wird das nicht beheben. Wahrscheinlich wird @cart nicht beibehalten. Sie müssen den Warenkorb erstellen/speichern, bevor Sie Assoziationen erstellen. – lightalloy