【发布时间】:2011-09-20 16:11:06
【问题描述】:
我有一个对象Message,它只由这一行创建:
Message.find_or_create_by(:api_id => params['message_id'])
理论上,我不应该有两条具有相同 api_id 的消息,但是……我有。当两个请求同时发生并且都调用该行时,就会发生这种情况。
其他人发布了与 ActiveRecord 相同的问题:Duplicate Records created by find_or_create_by_ 但我使用的是 Mongoid。
我该如何解决这个问题?
【问题讨论】:
-
AR 做错是一回事。 Mongoid 是在 MongoDB 之上专门设计的,应该为此使用完美的原子 upserts。没有选择直接使用驱动程序?
标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid