2010-07-16 30 views
4

有两类:'validates_presence_of'在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, :streetAddress不起作用。

我想念什么?或者Mongoid有错误?

回答

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:地址试图保存人之前验证地址。
希望这个作品

相关问题