У меня есть метод 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: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/gems/activerecord -3.2.22 / lib / active_record / transaction.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
Вы не должны использовать транзакцию в качестве одной из своих моделей. Выберите другое имя. Заказ — еще одно название, которое тоже можно было бы изменить.
почему я должен меняться? — person bookaka; 30.04.2017