4

2つのクラスがあります:

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、inAddressは機能しません。

私は何かが恋しいですか?または、Mongoidにバグがありますか?

4

1 に答える 1

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:addressesは、人を保存する前に住所を検証しようとするためです。
これがうまくいくことを願っています

于 2010-08-13T03:00:15.330 に答える