使用 Ruby On Rails 进行事务操作

发布于 2024-07-22 21:31:40 字数 84 浏览 8 评论 0原文

我在控制器内有一个复杂的操作,可以对数据库执行多个更新查询。

如何在不进行任何结构重构的情况下使此操作表现得像事务

I have a complex action inside controller that performs several update queries to the database.

How can I make this action acts like transaction without any structural refactoring?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

以歌曲疗慰 2024-07-29 21:31:44

可以通过以下方式同时使控制器中的所有操作成为事务性的:

around_filter :transactional

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

It's posible to make all actions in controller transactional at once with:

around_filter :transactional

def transactional
  ActiveRecord::Base.transaction do
    yield
  end
end
烛影斜 2024-07-29 21:31:43
MyModel.transaction do
  begin
    @model.update_stuff
    @sub_model.update_stuff
    @sub_sub_model.update_stuff
  rescue ActiveRecord::StatementInvalid # or whatever 
    # rollback is automatic, but if you want to do something additional, 
    # add it here
  end
end

以下是事务方法的文档

MyModel.transaction do
  begin
    @model.update_stuff
    @sub_model.update_stuff
    @sub_sub_model.update_stuff
  rescue ActiveRecord::StatementInvalid # or whatever 
    # rollback is automatic, but if you want to do something additional, 
    # add it here
  end
end

Here are the docs for the transaction method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文