此问题似乎已在之前的帖子中修复:Custom_fields simultaneous save with json becomes an array
不幸的是,我现在遇到了同时调用多个端点以更新用户自定义字段(custom_fields)的情况,导致我设置为 :text 的值变成了数组。
![]()
有任何帮助吗?这目前完全阻塞了我的整个项目……
我在本地开发环境中运行 2.5.0.beta7 版本时遇到了此问题。
在这种情况下,是否有任何方法可以在保存值之前对数据库加锁?
此问题似乎已在之前的帖子中修复:Custom_fields simultaneous save with json becomes an array
不幸的是,我现在遇到了同时调用多个端点以更新用户自定义字段(custom_fields)的情况,导致我设置为 :text 的值变成了数组。
![]()
有任何帮助吗?这目前完全阻塞了我的整个项目……
我在本地开发环境中运行 2.5.0.beta7 版本时遇到了此问题。
在这种情况下,是否有任何方法可以在保存值之前对数据库加锁?
这可能是我遇到的问题吗?Differences between transactions and locking - makandra dev
请注意,当两个事务在两个线程中并发运行时,每个线程在事务成功提交之前都无法看到另一个事务的更改。不过,每个线程可以看到自己的更改(这是一个简化的解释,实际情况要复杂得多)。
def self.cast_custom_field(key, value, types, return_array = true)
显示普通值,这让我觉得可能创建了多行。
这应该已经修复了。这是一个长期存在的 bug。
是的,我看到了:(皱眉)
不幸的是,我现在可能需要在同一时间更新敏感数据。我认为这是因为我是通过端点操作的,但这是我唯一能做到的方式,而且我无法控制这些调用。调用次数可能是1次,也可能是10次。
我可以尝试从应用端减少调用次数并批量发送部分数据,但问题是调用来源有两个:移动端和外部服务。
这还涉及支付数据:(
这听起来像是自定义字段的现有行为,而非回归问题。有几种方法可以修复:
类似这样?看起来可行。
DistributedMutex.synchronize("user_data_update_#{user.id}") do
user.save_custom_fields(true)
end
除此之外,我将修改逻辑,让调用逐个执行,而不是同时执行,希望能避免任何问题。
谢谢大家 @eviltrout @fzngagan