'validates_presence_of' не работает хорошо в Mongoid? - PullRequest
4 голосов
/ 16 июля 2010

Существует два класса:

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

Мы видим, мы подтвердили наличие city и street должны присутствовать.

Но посмотрите следующий код:

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 Ответ

7 голосов
/ 13 августа 2010

попробуйте это

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: address пытается проверить адрес перед сохранением человека.
Надеюсь, это сработает

...