4

有两个类:

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

我们可以看到,我们已经验证了cityandstreet应该存在。

但请参阅以下代码:

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, :streetinAddress不起作用。

我错过了什么吗?还是 Mongoid 有 bug?

4

1 回答 1

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 :addresses 尝试在保存人员之前验证地址。
希望这有效

于 2010-08-13T03:00:15.330 回答