【发布时间】:2016-04-04 20:28:48
【问题描述】:
我想通过远程连接(例如通过 ssh)使用数据库(mysql)。我想知道ActiveRecord是用事务吗? ActiveAdmin 保存嵌套的相关对象时是否使用事务?连接丢失时是否可能发生数据不一致?为此目的检查启用事务的选项(以及如何)是什么?
【问题讨论】:
标签: mysql ruby-on-rails activerecord transactions
我想通过远程连接(例如通过 ssh)使用数据库(mysql)。我想知道ActiveRecord是用事务吗? ActiveAdmin 保存嵌套的相关对象时是否使用事务?连接丢失时是否可能发生数据不一致?为此目的检查启用事务的选项(以及如何)是什么?
【问题讨论】:
标签: mysql ruby-on-rails activerecord transactions
无论您是通过直接还是通过 SSH 连接到远程数据库,数据库如何/是否使用事务都无关紧要。只要存在连接,ORM/DB 就不会关心网络连接的具体细节。
此外,ActiveAdmin 不决定如何应用事务。在 Rails 中创建记录时通常会使用事务,包括嵌套对象,因此如果父对象不保存,则不会保存子对象。但是,根据您在 ActiveRecord 中声明关联的方式,可能会有例外。
无论如何,验证事务是否正常运行的最佳方法是检查您的应用程序日志。查找 BEGIN COMMIT 和 ROLLBACK 语句,它们指示包装在事务中的特定 SQL 语句。
【讨论】: