2010-07-16 4 views
4

Il existe deux classes:'validates_presence_of' ne fonctionne pas bien dans 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 

Nous pouvons voir, nous avons validé le city et street devraient être présents.

Mais voir le code suivant:

person = Person.new 
person.addresses << Address.new 
person.save #-> true 

Et, nous utilisons mongo pour voir la base de données directement:

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

L'adresse a été insérée. Cela signifie que validates_presence_of :city, :street dans Address n'est pas travaillé.

Quelque chose me manque? Ou il y a un bug dans Mongoid?

Répondre

7

essayer cette

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 

maintenant je pense que si vous essayez d'enregistrer l'adresse alors vous ne serez pas en mesure de sauver la personne Parce que validates_assocaited: adresses tente de valider l'adresse avant d'enregistrer personne.
Espérons que cela fonctionne

Questions connexes