Ruby on rails persist嵌入一个关系mongoid

Ruby on rails persist嵌入一个关系mongoid,ruby-on-rails,ruby,ruby-on-rails-3,mongoid,Ruby On Rails,Ruby,Ruby On Rails 3,Mongoid,这将按以下顺序显示嵌入对象: class Order include Mongoid::Document include Mongoid::Timestamps #relationships embeds_one :user_detail #fields field :description #validations validates :user_detail, presence: true end 我想在mongodborder对象上保存/持久保存use

这将按以下顺序显示嵌入对象:

class Order
 include Mongoid::Document
 include Mongoid::Timestamps

 #relationships
  embeds_one :user_detail

  #fields
  field :description

  #validations  
  validates :user_detail, presence: true
end
我想在mongodb
order
对象上保存/持久保存
user\u详细信息
object
embedded\u在
order
对象中

我试过:

class UserDetail
  include Mongoid::Document
  include Mongoid::Timestamps

  #fields
  field :name, :type => String
  field :zip_code, :type => String
  field :email, :type => String

  # Relationships
  embedded_in :order

  #validations
  validates_presence_of :name, :zip_code, :email
end
但我发现验证失败:

order = Order.new(description: "checking description")
order.user_detail = Order.new(:name => "John", :zip_code => "26545", :email => "john@john.com")
order.save!
如何解决此问题?我正在使用mongoid3.x应该是:

o.save!
Mongoid::Errors::Validations: 
Problem:
  Validation of Order failed.
Summary:
  The following errors were found: User detail is invalid
Resolution:
  Try persisting the document with valid data or remove the validations....

您有
订单。新的
订单详细信息。新的

您不需要使用

order.user\u detail=UserDetail.new。。。
命令,救命!

如果添加autobuild属性,将自动创建嵌入的用户详细信息

embedded\u one:user\u detail autobuild:true

如果您还想在数据库中保存用户详细信息,请不要忘记添加

验证是否存在:用户详细信息


或者,您将无法在mongo db中看到持久化用户的详细信息。

Uppss,谢谢,这是一个错误。我已经编辑了您的回复,您的回复是
UserDetail
,而不是
OrderDetail
。非常感谢。
order = Order.new(description: "checking description")
order.user_detail = UserDetail.new(:name => "John", :zip_code => "26545", :email => "john@john.com")
order.save!