我有一个模型,它有一个名称数组,我想确保只有一个文档可以有一个给定的名称。我正在尝试编写一个自定义验证来处理这个问题。我的自定义验证和模型目前看起来像这样:
lib/unique_name_validator.rb
class UniqueNamesValidator < ActiveModel::EachValidator
def validate_each( record, attribute, value )
end
end
应用程序/模型/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 进行验证,但这也不起作用。