Ich habe eine Methode Order, dass, wenn der Status abgeschlossen ist, verringern Sie die Produktmenge in der Methode speichern und erstellen Sie einen Transaktionsdatensatz.Schienen speichern ein Objekt innerhalb einer Methode
Alles funktioniert, außer dass in den Protokollen fein zeigt:
sogar den Code zeigt noch funktioniert
jemand bitte erklären, warum das passieren?
def order_sold
if sold
order = Order.find(params[:id])
product = order.product
if order
if params[:status] == 'COMPLETED'
order.status = Order.statuses[0]
product = order.product
quantity = product.quantity
product.quantity -= order.quantity
product.save
transaction = Transaction.new
transaction.user_id = order.buyer_id
transaction.status = params[:status]
order.transaction = transaction
order.save
OrderMailer.order_confirmation(order).deliver
end
end
else
logger.info("FAILED")
end
render nothing: true
end
der Logger:
[object Object]
/data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22 /lib/active_record/connection_adapters/abstract/database_statements.rb:371:in
block in commit_transaction_records' /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/active_record/connection_adapters/abstract/database_statements.rb:370:in
jedes‘ /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/ active_record/connection_adapters/abstract/database_statements.rb: 370: in .210 Transaktion‘ /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:208:intransaction' /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:311:in
with_transaction_returning_status' /data/viop/releases/167/vendor/bundle/ruby / 2.2.0/edelsteine / activecord-3.2.22/lib/active_record/transactions.rb: 259: inblock in save' /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:270:in
rollback_active_record_state! ' /data/viop/releases/167/vendor/bundle/ruby/2.2.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:258:insave' /data/viop/releases/167/app/controllers/orders_controller.rb:216:in
order_sold
warum muss ich ändern? – bookaka