2017-04-25 88 views
0

我有一个方法如果状态已完成,请在方法保存中减少产品数量并创建一个事务记录。Rails将方法保存在方法中

一切正常,只是在日志中显示:

甚至流露出仍然有效

有人请可以解释为什么出现这种情况的代码?

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 

记录器:

[对象的对象]

/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 each' /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:在 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:218:in 交易” /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' /数据/ viop/releases/167/vendor/bundle/ruby​​/2.2.0/gems/activerecord-3.2.22/lib/active_record/transactions.rb:259: 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

回答

0

你应该不把交易作为你的模型之一。选择一个不同的名字。订单是另一个建议改变的名字。

+0

为什么我必须改变? – bookaka