Ich habe ein Produkt.
Ich habe eine Bestellung.
Ich habe eine Buchung zwischen.Schienen zuerst oder initialisieren funktioniert nicht
Immer wenn ich eine Buchung vom Produkt zur Bestellung mache speichert es eine neue einmalige Buchung.
Es sollte:
- Speichern Sie eine neue Buchung, wenn es das erste aus diesem Produkt hergestellt.
- Keine neue Buchung, aber eine alte finden und überschreiben, wenn das Produkt bereits einmal gebucht wurde.
- Wenn das Produkt bereits in der Bestellung gebucht wurde, aber keine Änderungen vorgenommen werden, werden keine Datenbanktransaktionen durchgeführt.
def create
@order = current_order
@booking = @order.bookings.where(product_id: params[:product_id]).first_or_initialize
product = @booking.product
if @booking.new_record?
@booking.product_name = product.name
@booking.product_price = product.price
else
@booking.product_quantity = params[:product_quantity]
@booking.save
@order.sum_all_bookings
@order.save
end
funktioniert nicht.
Folge arbeitet:
def create
@booking = @order.bookings.find_by(product_id: params[:booking][:product_id])
if @booking
@booking.product_quantity = params[:booking][:product_quantity]
@booking.save
else
@booking = @order.bookings.new(booking_params)
@product = @booking.product
@booking.product_name = @product.name
@booking.product_price = @product.price
end
@order.save
end
Offenbar brauchte ich die params zu packen, durch [:booking]
wie in params[:booking][:product_id]
hinzufügen. Jeder weiß warum?
Irgendwie kommen die Params nicht richtig durch. –