加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 由find_or_create在Rails Mongoid中创建的重复

发布时间:2020-12-16 23:25:55 所属栏目:百科 来源:网络整理
导读:我有一个对象Message,它只是由这一行创建的: Message.find_or_create_by(:api_id = params['message_id']) 从理论上讲,我永远不应该有两条相同api_id的消息,但是……我知道.当两个请求同时发生时,它都会调用该行. 有人在ActiveRecord上发布了同样的问题:Du
我有一个对象Message,它只是由这一行创建的:
Message.find_or_create_by(:api_id => params['message_id'])

从理论上讲,我永远不应该有两条相同api_id的消息,但是……我知道.当两个请求同时发生时,它都会调用该行.

有人在ActiveRecord上发布了同样的问题:Duplicate Records created by find_or_create_by_但我使用的是Mongoid.

我该如何解决这个问题?

解决方法

使用upserts找到解决方案:
Message.collection.update({:api_id => params['message_id']},{'$set' => {:api_id => params['message_id']}},:upsert => true)
@message = Message.where(:api_id => params['message_id']).first

觉得有点乱,但有效.仍然对替代品开放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读