2012-04-07 108 views
4

我有模式:validates_uniqueness_of利用兩個場

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 ] 

但是,當我試圖插入具有相同名稱的2個不同的文件,但不同的assigned_date我得到的錯誤:

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

我已經tryed兩個版本:

validates_uniqueness_of [ :name, :assignment_date ] 

validates_uniqueness_of :name, :assignment_date 

如果我將評論此行一切正常。

回答

14

Accoring到this軌指導你可以做到以下幾點:

validates :assignment_date, :uniqueness => { :scope => :name } 
+0

我不使用Rails的 – demas 2012-04-07 11:48:48

+6

也許不是軌,但你使用它加載ActiveModel正在使用的軌道,因此驗證是有點相同。但感謝downvote! – Vapire 2012-04-07 13:37:04