Rails сохраняет объект внутри метода

У меня есть метод Order, который, если статус завершен, уменьшает количество продукта при сохранении метода и создает запись транзакции.

Все работает нормально, кроме того, что в логах показывает:

даже показ кода все еще работает

Кто-нибудь может объяснить, почему это произошло?

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

регистратор:

[Объект 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 each ‘/ data / viop / Release /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 transaction ‘/ data / viop / Release / 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/gems/activerecord -3.2.22 / lib / active_record / transaction.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

См. также:  Ошибка XCode: достигнуто максимальное количество приложений для бесплатных профилей разработки.
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. bookaka

    Вы не должны использовать транзакцию в качестве одной из своих моделей. Выберите другое имя. Заказ — еще одно название, которое тоже можно было бы изменить.

    почему я должен меняться? person bookaka; 30.04.2017

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: