我有一個模型,它有名稱和數組,我想確保只有一個文檔可以有一個給定的名稱。我試圖編寫一個自定義驗證來處理這個問題。我的自定義驗證和模型看起來像這樣的時刻:Mongoid:我怎樣才能讓Mongoid識別我的自定義ActiveModel驗證?
lib/unique_name_validator.rb
class UniqueNamesValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
end
end
app/models/MyModel.rb
class MyModel
include Mongoid::Document
validates :names, :unique_names => true
field :names, :type => Array
end
但我發現了未知的驗證: 'unique_names'(引發ArgumentError)。 Mongoid文檔說,每個模型都包含ActiveModel :: Validation,我認爲這將允許他們使用我的自定義驗證。我也嘗試過從ActiveModel :: Validator繼承並使用validates_with進行驗證,但這也不起作用。