说我有两个型号:
class Person
include Mongoid::Document
embeds_one :address
end
class Address
include Mongoid::Document
embedded_in :person
end
我正在尝试设置已创建的person
的地址,而不会将address
保留到数据库中。
person.address = Address.new # Automatically persists address to the database.
我的问题与this one基本相同,但这是一个embeds_one
关系,因此build
方法不可用。我已经看到了动态创建的build_<embedded_object>
方法,但它似乎不接受与build
相同的选项,即用于构建嵌入对象的特定类(它是关联类的子类) :
person.posts.build({
name: "Another post"
}, SpecialPost)
# Works
person.build_address({
name: "An address"
}, SpecialAddress)
# Does not work
答案 0 :(得分:1)
默认情况下,当您运行
时,嵌入的地址将不会保留 Person.new(...)
仅当您将autobuild添加为true时才会保留
embeds_one :address, autobuild: true
并设置
validates_presence_of :address
后者将确保它将在数据库中持久存在。
或者您可以将地址分配给person对象而不保存它。