Mongoid:从Moped :: Errors获取mongo错误代码

时间:2013-12-05 22:35:44

标签: ruby-on-rails ruby mongodb mongoid

我正在使用Mongoid构建一个使用MongoDB中存储的模型的Rails服务器。

在某些情况下,用户可以尝试使用重复索引值将文档添加到mongo数据库。有没有办法检索MongoDB错误代码(在本例中为11000)而不解析错误消息,以便我可以使我的异常处理更健壮?

编辑:标题有Mongoid :: Errors而不是Moped :: Errors

1 个答案:

答案 0 :(得分:3)

我开发了mongoid_token gem并遇到了这个确切的问题,因为这个gem的核心功能依赖于能够识别特定字段(在这种情况下,令牌)是否是密钥复制的原因

如果你所有的都是错误代码,那么是 - 你可以得到这个。但是,如果您需要更精确的详细信息(例如字段名称),则需要解析错误说明。

此外,如果您正在测试重复密钥,我认为您需要检查错误代码1100011001(更新时的重复密钥)。 mongoDB错误代码的部分列表是here

我已经从下面的宝石中解释了一些代码:

begin
    #... do whatever
rescue Moped::Errors::OperationFailure => e
  description = e.details['err']

  if [11000, 11001].include?(e.details['code'])
    # Duplicate key error
  end
end