'validates_presence_of'在Mongoid中效果不佳?

时间:2010-07-16 06:58:03

标签: 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

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

但请参阅以下代码:

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中有一个错误?

1 个答案:

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