我有一个Rails应用程序(Rails v4.2.4和Ruby v2.2.2)有时会出现魔术错误。.所以,让我们尝试解释发生的情况。
由于某种原因,我的记录在几分之一秒内就被复制了,他只是复制了交易并保留了重复的记录
我想知道你们中的某个“大师”是否通过了这种情况。
问题不会每次都出现,这对我来说意味着错误不在我的代码上,因为该规范令人满意。
我已经阅读了许多文档,并得到了带有嵌套事务的可疑“ ActiveRecord :: Base.transaction” ...但即使是我最努力的尝试,我也无法重现该错误,这确实使我感到困惑和沮丧
我正在寻求帮助! rs ..
答案 0 :(得分:0)
好的。首先,如果您不想在基础中有重复的记录,则应添加数据库约束。通过此link可以更好地理解。数据库约束是避免重复数据的第一步。
现在,如果要在单个调用中创建/更新两个或多个不相关的对象,通常使用ActiveRecord :: Base.transaction。您希望所有人都成功,否则就什么也不做。就像创建单个对象时一样,默认情况下所有回调都包装在事务中,因此在这种情况下您无需添加ActiveRecord :: Base.transaction块。
更高级的方法是使用ActiveRecord::Locking。当您处理财务数据时,此技术尤其重要。
要重现该错误,只需同时发送两个curl请求。