Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中不同形式的validates方法_Ruby On Rails - Fatal编程技术网

Ruby on rails rails中不同形式的validates方法

Ruby on rails rails中不同形式的validates方法,ruby-on-rails,Ruby On Rails,根据rails的内置验证函数,以下两种方法之间的区别是什么 validates :password, :confirmation =>true 及 据我所知,第一个是在rails版本3中引入的? 我说的对吗?它们都做同样的事情,验证(confirmation)只是验证的众多简短帮助方法之一 如果您查看源代码,您可以看到validates方法只是用来处理所有验证器,而validates\u confirmation\u of显式使用ConfirmationValidator 我认为,验证了

根据rails的内置验证函数,以下两种方法之间的区别是什么

validates :password, :confirmation =>true

据我所知,第一个是在rails版本3中引入的?
我说的对吗?

它们都做同样的事情,
验证(confirmation)
只是
验证
的众多简短帮助方法之一

如果您查看源代码,您可以看到
validates
方法只是用来处理所有验证器,而
validates\u confirmation\u of
显式使用
ConfirmationValidator

我认为,
验证了
的确认是在Rails 2中引入的,所以它已经存在了很长一段时间了

来源比较:

  def validates_confirmation_of(*attr_names)
    validates_with ConfirmationValidator, _merge_attributes(attr_names)
  end


它们都做同样的事情,
验证
的确认只是
验证
的众多简短帮助方法之一

如果您查看源代码,您可以看到
validates
方法只是用来处理所有验证器,而
validates\u confirmation\u of
显式使用
ConfirmationValidator

我认为,
验证了
的确认是在Rails 2中引入的,所以它已经存在了很长一段时间了

来源比较:

  def validates_confirmation_of(*attr_names)
    validates_with ConfirmationValidator, _merge_attributes(attr_names)
  end

  def validates(*attributes)
    defaults = attributes.extract_options!
    validations = defaults.slice!(*_validates_default_keys)

    raise ArgumentError, "You need to supply at least one attribute" if attributes.empty?
    raise ArgumentError, "You need to supply at least one validation" if validations.empty?

    defaults.merge!(:attributes => attributes)

    validations.each do |key, options|
      # LOOK AT THIS LINE
      key = "#{key.to_s.camelize}Validator"

      begin
        validator = key.include?('::') ? key.constantize : const_get(key)
      rescue NameError
        raise ArgumentError, "Unknown validator: '#{key}'"
      end

      # AND LOOK AT THIS LINE
      validates_with(validator, defaults.merge(_parse_validates_options(options)))
    end
  end