gpt4 book ai didi

sql - 将所有 Controller 操作包装在 Rails 中的事务中

转载 作者:数据小太阳 更新时间:2023-10-29 06:48:05 25 4
gpt4 key购买 nike

是否可以设置一个 Rails 应用程序,以便所有 Controller 操作都自动包装在一个事务中,并在出现未挽救的异常时自动回滚?

我正在开发一个 Rails 3 应用程序,目前正在执行一项相当棘手的操作,该操作会进行大量数据库更改。而且我一直弄错了很多次!一段时间后,我意识到我的代码无法正常工作,因为我最终在数据库中得到了不一致的数据。

我可以很容易地用一个事务来包装它(这是一个明显需要的实例!)。然而,这让我想到,至少在开发过程中,将这个想法应用于每个 Controller 操作会很有用。

假设这是可能的,这有什么缺点吗?

最佳答案

有关信息,我在我的应用程序 Controller 中使用了一个 around_filter:

around_filter :wrap_in_transaction

def wrap_in_transaction
ActiveRecord::Base.transaction do
yield
end
end

这只是在任何未处理的异常上回滚事务,并重新引发异常。

关于sql - 将所有 Controller 操作包装在 Rails 中的事务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8507596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com