1
,以下兩種方法有什麼區別?根據rails的內置驗證函數,在rails中驗證方法的不同形式
validates :password, :confirmation =>true
和
validates_confirmation_of :password
,據我瞭解,第一次是剛剛在軌道3版本中引入了? 我是否正確?
,以下兩種方法有什麼區別?根據rails的內置驗證函數,在rails中驗證方法的不同形式
validates :password, :confirmation =>true
和
validates_confirmation_of :password
,據我瞭解,第一次是剛剛在軌道3版本中引入了? 我是否正確?
它們都做同樣的事情,validates_confirmation_of
只是validates
的許多簡單幫助器方法之一。
如果你看看源代碼,你可以看到validates
方法只是用來處理所有驗證而validates_confirmation_of
明確使用ConfirmationValidator
我覺得validates_confirmation_of
在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