有两个类:
class Person
include Mongoid::Document
field :name
embeds_many :addresses
end
class Address
include Mongoid::Document
field :city
field :street
validates_presence_of :city, :street
end
我们可以看到,我们已经验证了city
和street
应该存在。
但请参阅以下代码:
person = Person.new
person.addresses << Address.new
person.save #-> true
并且,我们使用mongo
直接查看数据库:
$mongo
> use the_db
> db.people.find()
{"_id":"xxxxx", "addresses":[{"_id":"xxxxx"}]}
已插入地址。这意味着validates_presence_of :city, :street
中的Address
无效。
我错过了什么吗?或者Mongoid中有一个错误?
答案 0 :(得分:7)
试试这个
class Person
include Mongoid::Document
field :name
embeds_many :addresses
validates_associated :addresses
end
class Address
include Mongoid::Document
field :city
field :street
embedded_in :person
validates_presence_of :city, :street
end
现在我认为如果您尝试保存地址,那么您将无法保存人员 因为validates_assocaited:地址会在保存人员之前尝试验证地址 希望这有效