gpt4 book ai didi

state-machine - 在 state_machine gem 中的多条记录上触发事件

转载 作者:行者123 更新时间:2023-12-01 11:35:49 25 4
gpt4 key购买 nike

我在我的一个模型中使用 state_machine 进行状态转换。过渡在单个记录上成功发生。但是如果我必须在多个记录上触发一个事件怎么办。我可以使用

在多个记录中进行转换
     @records.each &:event

但此方法执行查询的次数与@records 的次数一样多。我如何触发事件以仅通过一个查询进行状态转换。请帮忙。

谢谢。

最佳答案

在 Rails (4) 中,这可以使用 B#transaction 来完成(或 B#save),如 SO: save an active records array 中所述.

我对在 200 条记录上运行一个简单的 state_machine 事件进行了基准测试,结果如下所示。

代替:

@records.each &:event
# Completed 302 Found in 1700ms (ActiveRecord: 778.6ms)

做:

ActiveRecord::Base.transaction do
@records.each &:event
end
# Completed 302 Found in 977ms (ActiveRecord: 73.4ms)

如前面链接的 SO 答案中所述,这会将这些事务包装为一个原子操作。

注意:可能有错误处理的边缘情况,这没有解决。

关于state-machine - 在 state_machine gem 中的多条记录上触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829332/

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