2017-04-25 2 views
0

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:in transaction' /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: in block 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:in save' /data/viop/releases/167/app/controllers/orders_controller.rb:216:in order_sold

Antwort

0

Sie sollten Verwenden Sie Transaktion nicht als eines Ihrer Modelle. Wählen Sie einen anderen Namen. Bestellung ist ein anderer Name, der vorschlagen würde, sich auch zu ändern.

+0

warum muss ich ändern? – bookaka

Verwandte Themen