MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để xác thực các thành viên của một trường mảng?

Bạn có thể xác định ArrayValidator tùy chỉnh . Đặt phần sau vào 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

Bạn có thể sử dụng nó như thế này trong các mô hình của mình:

class User
  include Mongoid::Document
  field :tags, Array

  validates :tags, array: { presence: true, inclusion: { in: %w{ ruby rails } }
end

Nó sẽ xác thực từng phần tử từ mảng so với mọi trình xác thực được chỉ định trong array băm.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. sử dụng một biến trong bản cập nhật mongodb

  2. Mongoose JS findOne luôn trả về null

  3. Node.js - Tạo mối quan hệ với Mongoose

  4. Trong Mongo sự khác biệt giữa sharding và replication là gì?

  5. Cách thêm dữ liệu vào mảng trong Mongoose Schema