我正在使用Mongoid构建一个使用MongoDB中存储的模型的Rails服务器。
在某些情况下,用户可以尝试使用重复索引值将文档添加到mongo数据库。有没有办法检索MongoDB错误代码(在本例中为11000)而不解析错误消息,以便我可以使我的异常处理更健壮?
编辑:标题有Mongoid :: Errors而不是Moped :: Errors
答案 0 :(得分:3)
我开发了mongoid_token gem并遇到了这个确切的问题,因为这个gem的核心功能依赖于能够识别特定字段(在这种情况下,令牌)是否是密钥复制的原因
如果你所有的都是错误代码,那么是 - 你可以得到这个。但是,如果您需要更精确的详细信息(例如字段名称),则需要解析错误说明。
此外,如果您正在测试重复密钥,我认为您需要检查错误代码11000
和11001
(更新时的重复密钥)。 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