Docs Menu
Docs Home
/ / /
Mongoid
/

検証

項目一覧

  • validates_uniqueness_of:conditionsオプション
  • 読み込み設定(read preference) validates_uniqueness_of

Mongoid には、基本的な検証に加えて、追加の関連 および 一意性バリデーターを提供するための ActiveModel::Validationsが含まれています。

アクティブなレコード検証 を参照 Rails ガイドと ActiveModel::Validation 詳細については、ドキュメントを参照してください。

すでに保存されているデータで#valid?を使用する場合、Mongoid は ActiveRecord とは若干異なる動作をします。 ActiveRecord の#valid?はすべての検証を実行しますが、Mongoid の#valid?は最適化としてメモリにあるドキュメントの検証のみを実行します。

validates_uniqueness_ofに対する:conditionsオプションは、同一のドキュメントを検索するデータベース クエリに追加する追加の条件を提供するために使用できます。 このオプションは検証が実行されるタイミングに影響しないため、Mongoid がモデルからそれぞれのフィールドの現在の値を取得するときに考慮されないためです。 次の例で考えてみましょう。

class Band
include Mongoid::Document
field :name, type: String
field :year, type: Integer
validates_uniqueness_of :name, conditions: -> { where(:year.gte => 2000) }
end
# OK
Band.create!(name: "Sun Project", year: 2000)
# Fails validation because there is a band with the "Sun Project" name
# and year 2000 in the database, even though the model being created now
# does not have a year.
Band.create!(name: "Sun Project")

属性の一意性を検証するために、Mongoid はその属性の値がデータベース内にまだ存在しないことを確認する必要があります。 Mongoid がレプリカセットのセカンダリ ノードをクエリする場合、古いデータが読み取られている可能性があります。 このため、 validates_uniqueness_of検証をチェックするために使用されるクエリでは、常に読み込み設定(read preference primaryが使用されます。

戻る

関連付け