class Order
include Mongoid::Document
include Mongoid::Timestamps
#relationships
embeds_one :user_detail
#fields
field :description
#validations
validates :user_detail, presence: true
end
这是嵌入对象的顺序:
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
对象user_detail
embedded_in
对象的mongodb order
对象上保存/保留。
我尝试过:
order = Order.new(description: "checking description")
order.user_detail = Order.new(:name => "John", :zip_code => "26545", :email => "john@john.com")
order.save!
但我的验证失败了:
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....
如何解决此问题?我正在使用mongoid 3.x
答案 0 :(得分:2)
应该是:
order = Order.new(description: "checking description")
order.user_detail = UserDetail.new(:name => "John", :zip_code => "26545", :email => "john@john.com")
order.save!
Order.new
OrderDetail.new
答案 1 :(得分:0)
您无需使用
手动创建user_detail order.user_detail = UserDetail.new...
order.save!
如果您添加autobuild属性
,将自动创建嵌入式user_detail embeds_one :user_detail autobuild: true
如果你想在数据库中持久存在user_detail,也不要忘记添加
validates_presence_of :user_detail
或者你不会在mongo db中看到持久的user_detail。