'validates_presence_of'在Mongoid中效果不佳?

Fre*_*ind 4 ruby-on-rails mongodb mongoid

有两个类:

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
Run Code Online (Sandbox Code Playgroud)

我们可以看到,我们已经验证了city并且street应该存在.

但请参阅以下代码:

person = Person.new
person.addresses << Address.new
person.save #-> true
Run Code Online (Sandbox Code Playgroud)

而且,我们用来mongo直接查看数据库:

$mongo
> use the_db
> db.people.find()
{"_id":"xxxxx", "addresses":[{"_id":"xxxxx"}]}
Run Code Online (Sandbox Code Playgroud)

地址已插入.这意味着,validates_presence_of :city, :streetAddress不工作.

我错过了什么吗?或者Mongoid中有一个错误?

Gag*_*gan 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
Run Code Online (Sandbox Code Playgroud)

现在我认为,如果你试图保存地址,那么你将无法保存人因为validates_assocaited:地址试图在保存人之前验证地址.
希望这有效