答案 0 :(得分:0)
在PostgreSQL中有transaction附带ACID保证的东西。一旦你进行交易,你几乎就是“在你自己的世界里”。您且只有您可以进行更改并看到它们已应用,其他任何观察者都不会看到这些更改。
如果其他人要查看您已应用的更改,则必须提交,否则所有更改都将丢失。如果应用程序决定发出ROLLBACK
,如果发生故障(验证,异常,等等),则这些更改将丢失。如果连接断开,这些更改将丢失。如果进程终止,则会丢失这些更改。
测试套件通常在巨大的事务中运行。测试套件完成后,会发出ROLLBACK
,数据库与测试运行前的数据库相同。这样,测试运行就不会在数据库的数据中留下任何痕迹:代码可能已经坏了和/或坏了,这可能会影响进一步的测试运行。对于不的情况,测试套件在事务中运行。其缺点是:无法从外部观察到变化。
在pry
会话中,使用ActiveRecord的方法。由于它在正在进行交易的连接上运行,因此能够看到当时构建的状态。