आप कस्टम ArrayValidator
. को परिभाषित कर सकते हैं . निम्नलिखित को app/validators/array_validator.rb
में रखें :
class ArrayValidator < ActiveModel::EachValidator
def validate_each(record, attribute, values)
Array(values).each do |value|
options.each do |key, args|
validator_options = { attributes: attribute }
validator_options.merge!(args) if args.is_a?(Hash)
next if value.nil? && validator_options[:allow_nil]
next if value.blank? && validator_options[:allow_blank]
validator_class_name = "#{key.to_s.camelize}Validator"
validator_class = begin
validator_class_name.constantize
rescue NameError
"ActiveModel::Validations::#{validator_class_name}".constantize
end
validator = validator_class.new(validator_options)
validator.validate_each(record, attribute, value)
end
end
end
end
आप इसे अपने मॉडल में इस तरह इस्तेमाल कर सकते हैं:
class User
include Mongoid::Document
field :tags, Array
validates :tags, array: { presence: true, inclusion: { in: %w{ ruby rails } }
end
यह प्रत्येक को मान्य करेगा प्रत्येक . के सामने सरणी से तत्व array
. के भीतर निर्दिष्ट सत्यापनकर्ता हैश।