0
언젠가는 트랜잭션이 ActiveRecord :: Rollback을 허용하지 않습니다.ActiveRecord :: Rollback은 트랜잭션 롤백을 수행하지 않는 것 같습니다
예를
ActiveRecord::Base.transaction do
puts @shipment_list.status
@shipment_list.update(shipment_list_params)
raise ActiveRecord::Rollback
end
puts @shipment_list.status
결과 실수가
CACHE (0.0ms) SELECT `shipment_lists`.* FROM `shipment_lists` WHERE `shipment_lists`.`id` = 24121 ORDER BY created_at DESC LIMIT 1 [["id", "24121"]]
(0.2ms) BEGIN
reserve
(1.3ms) SELECT MAX(`audits`.`version`) AS max_id FROM `audits` WHERE `audits`.`auditable_id` = 24121 AND `audits`.`auditable_type` = 'ShipmentList'
SQL (160.5ms) INSERT INTO `audits` (`action`, `auditable_id`, `auditable_type`, `audited_changes`, `created_at`, `remote_address`, `request_uuid`, `user_id`, `user_type`, `version`) VALUES ('update', 24121, 'ShipmentList', '---\nstatus:\n- reserve\n- 2\n', '2016-07-10 12:01:55', '127.0.0.1', 'efc5b6e7-c3f9-4b4a-a0fd-67651b2eeb20', 18, 'User', 19)
SQL (0.3ms) UPDATE `shipment_lists` SET `status` = 2, `updated_at` = '2016-07-10 12:01:55' WHERE `shipment_lists`.`id` = 24121
(0.2ms) ROLLBACK
bill
: 나는 그런 예를 가지고? 나는 정말로 곤경에 빠져있다.
예제의 마지막 줄에'@shipment_list.reload'와'@shipment_list.status'를 사용해 볼 수 있습니까? –
불행히도 이것은 아무런 효과가 없습니다 –
롤백을하지 않는다고 생각하는 이유는 무엇입니까? 붙여 넣은 로그에는 '롤백'이 포함됩니다. 당신이 관찰하고있는 실제 문제는 무엇입니까? 그것이 당신이 기대하는 것과는 다른 무엇을보고 있습니까? – jrochkind