6

私はモデルを持っています:

class Action
  include Mongoid::Document
  field :name, type: String
  field :assignment_date, type: Date
  ...

  index(
    [
      [ :name, Mongo::ASCENDING ],
      [ :assignment_date, Mongo::ASCENDING ]
      ], 
      unique: true
  )

  validates_uniqueness_of [ :name, :assignment_date ]

しかし、同じ名前で別の assigned_date を持つ 2 つの異なるドキュメントを挿入しようとすると、エラーが発生します。

Mongoid::Errors::Validations - Validation failed - Name is already taken, Assignment date is already taken.:

私は両方のバージョンを試しました:

  validates_uniqueness_of [ :name, :assignment_date ]

  validates_uniqueness_of :name, :assignment_date 

この行にコメントすると、すべて正常に動作します。

4

2 に答える 2

15

モンゴイド:

validates_uniqueness_of :name, :scope => :assignment_date

ドキュメントから:埋め込みドキュメントの場合、これはフィールドがデータベース全体ではなく、親ドキュメントのコンテキスト内で一意であることのみを確認することに注意してください。

http://mongoid.org/docs/validation.html

于 2012-04-07T12:04:50.957 に答える
14

このレールガイドによれば、次のことができます。

validates :assignment_date, :uniqueness => { :scope => :name } 
于 2012-04-07T11:40:53.300 に答える