2

私は2つのモデルを持っています

class Person
  embeds_one :address
end

class Address
  embedded_in :person
  field :city
  validates :city, :presence => true
end

今私がするとき

person.address = Address.new

アドレスの検証が呼び出されます。しかし、私の場合は検証は必要ありませんし、:validatesアドレスから削除することもできません (後で必要になるため)。のようなことをしたい(:validate => false)。誰かが思いついたら、私に知らせてください!私はmongoid-2.0.0を使用しています。

4

3 に答える 3

1

使用できます

person.address = Address.create

その後、検証は私が信じているとは呼ばれていません。レコードを更新して最終的に保存すると、検証が呼び出されます。次のようなものを使用することも可能です

person.address = Address.new :addres => "Valid address"

検証は失敗しません。

検証のオンとオフを切り替えると、データベース内のアドレスが無効になるため、私には奇妙に思えます...空のアドレスが問題になる場合は、空のアドレスも受け入れるように検証ルーチンを変更できます。

于 2011-04-04T10:59:40.327 に答える
1

あなたが望むものは次のとおりだと思います:

address = person.build_address

または単に:

person.build_address

「ビルドと作成」セクションを参照してください。

于 2011-12-18T22:25:34.850 に答える
0

カスタム住所バリデーターを作成して、それが新しいレコードかどうかを確認するのはどうですか。もしそうなら、それは空の電子メールでまだ有効ですか?

于 2011-04-28T15:06:34.657 に答える