使用Rails的活动记录,是否有另一种方法可以在不引发异常的情况下进行回滚?

l__flex__l

我正在编写测试,并为必须回滚异常而感到困扰。

raise ActiveRecord::Rollback

我为此感到困扰的原因是,我需要回滚以保持数据库清洁,以便下次测试运行。没有异常事件。

这与异常的想法背道而驰。除此之外,例外是昂贵的。

因此,还有其他回滚方法吗?还是我的担忧听起来不太好(如果可以,请解释原因)?

我忘了提及我的应用程序是使用ActiveRecord和迷你测试的Sinatra应用程序。

布拉德·沃思

我认为您的顾虑一般。在大多数情况下,例外代价很高,因此不应期望。

但是,根据ActiveRecord :: Rollback文档,此异常有些独特。它的意思是“区别于其他异常情况的故意回滚”。

引用文档:

ActiveRecord :: Transactions :: ClassMethods#transaction使用此异常将故意回滚与其他异常情况区分开。通常,引发异常将导致事务方法回滚数据库事务并传递异常。但是,如果引发ActiveRecord :: Rollback异常,则数据库事务将回滚,而不会传递该异常。

如果Rails以这种方式专门使用它,那么确实没有理由不为此(或任何其他相关)目的使用它。

如此说来,正如Sergio和Dan在评论中指出的那样,许多人似乎更喜欢Rails的事务处理夹具数据库清理器之类的简单性,而不是创建自定义解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以在不引发异常的情况下回滚Dynamics CRM插件中的事务?

来自分类Dev

是否有另一种方法可以在不使用承诺的情况下从此 SQL 返回值?

来自分类Dev

还有另一种方法可以在不使用宏定义的情况下做到这一点吗?

来自分类Dev

还有另一种方法可以在不使用数组索引的情况下获取索引吗?前任。不使用数组[5]

来自分类Dev

如何在有条件的情况下进行编程,一种方法何时变得比另一种更好

来自分类Dev

有没有另一种方法可以在没有callig round()的情况下舍去小数点后10位的数字?

来自分类Dev

在没有 Internet Explorer 弹出窗口的情况下对 VSTS 进行身份验证的另一种方法?

来自分类Dev

找出一种方法是否可以调用另一种方法

来自分类Dev

是否有另一种选择,可以在不使用QueryDsl的情况下通过包含的实体的pk删除该实体?(

来自分类Dev

是否有另一种方法来过滤记录而不使用 Where 子句

来自分类Dev

是否有另一种方法可以确保所有模块的NancyFx SSL?

来自分类Dev

在SQL Server中的情况下是否有一种方法可以选择多个值

来自分类Dev

有没有一种方法可以在不使用python GIL的情况下进行序列化/反序列化

来自分类Dev

有没有一种方法可以在不使用MatTableDataSource的情况下对物料表进行物料分页?角度10

来自分类Dev

有没有一种方法可以在不使用Drush的情况下从bash脚本安装Drupal?

来自分类Dev

有没有一种方法可以在不使用队列或Blob存储的情况下触发webjob?

来自分类Dev

有没有一种方法可以在不命名结构的情况下使用指针在结构内部?

来自分类Dev

在不使用ScriptProperties的情况下通过处理程序传递数据(例如,数组值)的另一种方法

来自分类常见问题

自从iOS 7发布以来,是否有一种方法可以在PC / Mac上不使用iTunes的情况下获取UDID?

来自分类Dev

parseJSON在一种情况下有效,而在另一种情况下无效

来自分类Dev

调用活动的另一种方法。

来自分类Dev

在Swift中是否有一种方法可以将泛型约束为一种类型或另一种类型?

来自分类Dev

是否有另一种方法可以替代.val(),我需要使用另一个值来选择一个类

来自分类Dev

在一种情况下使用SAXParseException,但在使用相同xml的情况下则不在另一种情况下

来自分类Dev

有没有一种方法可以在不运行另一个不必要的命令的情况下运行sudo?

来自分类Dev

引发异常并将其记录的一种方法

来自分类Dev

有没有一种方法可以在没有foreach循环的情况下对小于给定点的数组中的整数进行计数?

来自分类Dev

还有没有使用CONCATENATE关键字进行连接的另一种方法?

来自分类Dev

有没有一种方法可以在不测试整个应用程序的情况下对类库(通用Windows)进行单元测试?

Related 相关文章

  1. 1

    有没有一种方法可以在不引发异常的情况下回滚Dynamics CRM插件中的事务?

  2. 2

    是否有另一种方法可以在不使用承诺的情况下从此 SQL 返回值?

  3. 3

    还有另一种方法可以在不使用宏定义的情况下做到这一点吗?

  4. 4

    还有另一种方法可以在不使用数组索引的情况下获取索引吗?前任。不使用数组[5]

  5. 5

    如何在有条件的情况下进行编程,一种方法何时变得比另一种更好

  6. 6

    有没有另一种方法可以在没有callig round()的情况下舍去小数点后10位的数字?

  7. 7

    在没有 Internet Explorer 弹出窗口的情况下对 VSTS 进行身份验证的另一种方法?

  8. 8

    找出一种方法是否可以调用另一种方法

  9. 9

    是否有另一种选择,可以在不使用QueryDsl的情况下通过包含的实体的pk删除该实体?(

  10. 10

    是否有另一种方法来过滤记录而不使用 Where 子句

  11. 11

    是否有另一种方法可以确保所有模块的NancyFx SSL?

  12. 12

    在SQL Server中的情况下是否有一种方法可以选择多个值

  13. 13

    有没有一种方法可以在不使用python GIL的情况下进行序列化/反序列化

  14. 14

    有没有一种方法可以在不使用MatTableDataSource的情况下对物料表进行物料分页?角度10

  15. 15

    有没有一种方法可以在不使用Drush的情况下从bash脚本安装Drupal?

  16. 16

    有没有一种方法可以在不使用队列或Blob存储的情况下触发webjob?

  17. 17

    有没有一种方法可以在不命名结构的情况下使用指针在结构内部?

  18. 18

    在不使用ScriptProperties的情况下通过处理程序传递数据(例如,数组值)的另一种方法

  19. 19

    自从iOS 7发布以来,是否有一种方法可以在PC / Mac上不使用iTunes的情况下获取UDID?

  20. 20

    parseJSON在一种情况下有效,而在另一种情况下无效

  21. 21

    调用活动的另一种方法。

  22. 22

    在Swift中是否有一种方法可以将泛型约束为一种类型或另一种类型?

  23. 23

    是否有另一种方法可以替代.val(),我需要使用另一个值来选择一个类

  24. 24

    在一种情况下使用SAXParseException,但在使用相同xml的情况下则不在另一种情况下

  25. 25

    有没有一种方法可以在不运行另一个不必要的命令的情况下运行sudo?

  26. 26

    引发异常并将其记录的一种方法

  27. 27

    有没有一种方法可以在没有foreach循环的情况下对小于给定点的数组中的整数进行计数?

  28. 28

    还有没有使用CONCATENATE关键字进行连接的另一种方法?

  29. 29

    有没有一种方法可以在不测试整个应用程序的情况下对类库(通用Windows)进行单元测试?

热门标签

归档