首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建嵌入对象时,Moped::Error::OperationFailure

在创建嵌入对象时,Moped::Error::OperationFailure
EN

Stack Overflow用户
提问于 2014-08-18 19:10:45
回答 1查看 469关注 0票数 2

我使用的是Mongoid3.1.4,同时还使用了moped 1.5.1、MongoDB2.4.1和ruby1.9.3。

我有下一个模特:

代码语言:javascript
复制
class Practice
  include Mongoid::Document
  embeds_many :distresses
end

class Distress
  include Mongoid::Document
  embedded_in :practice
end

当我做这样的事情时,它似乎起作用了:

代码语言:javascript
复制
practice = Practice.create
practice.distresses.create

但是,当我在我的配置文件中放置:true并做同样的操作时,我得到:

代码语言:javascript
复制
Moped::Errors::OperationFailure: The operation: #<Moped::Protocol::Command
  @length=82
  @request_id=22
  @response_to=0
  @op_code=2004
  @flags=[]
  @full_collection_name="collection.$cmd"
  @skip=0
  @limit=-1
  @selector={:getlasterror=>1, :safe=>true}
  @fields=nil>

实际上,我在制造痛苦的时候犯了个错误。这也会引发异常:

代码语言:javascript
复制
practice = Practice.create
distress = practice.distresses.build
distress.save

当我检查practice.distresses.count时,我可以看到在数据库中成功创建的问题,但是我得到了上面提到的异常。

EN

回答 1

Stack Overflow用户

发布于 2014-08-25 15:59:56

好吧,过了几天我就解决了这个问题。

在我的危难模型中,我有一个before_create回调,试图更新实践父对象上的一个字段。不知怎么的,这使得Moped创建了一个错误的请求,使MongoDB失败。

我将before_create回调改为after_create,现在一切都正常了。

希望这能帮到别人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25370419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档