gpt4 book ai didi

ruby-on-rails - Rails 3 ActiveRecord 事务

转载 作者:行者123 更新时间:2023-12-04 07:30:24 26 4
gpt4 key购买 nike

我有一个模型方法,我想从各种 Controller 中调用它。它看起来像这样:

def Post < ActiveRecord::Base
def read!
self.read_at = Time.now
self.save
self.thread.status = Status.find_by_name("read")
self.thread.save
end
end

在我的 Controller 中,如果我调用 @post.read! ,这会回滚任何错误吗?

最佳答案

在您当前的设置中,如果 read_at 给出错误,它仍然会继续执行 thread.status 的代码。例如。

您想使用 ActiveRecord transactions :

def read!
transaction do
self.read_at = Time.now
self.save
self.thread.status = Status.find_by_name("read")
self.thread.save
end
end

通过使用事务,您可以确保您的所有数据库调用(在事务 block 内)都将被持久化到数据库中,或者根本没有。

关于ruby-on-rails - Rails 3 ActiveRecord 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560731/

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