2012-01-10 3 views

答えて

1

両者は同じ正確なことを行いますが、validates_confirmation_ofは、validatesの多くの短い形式のヘルパーメソッドの1つに過ぎません。

あなたがソースを見れば、あなたはvalidates_confirmation_ofが明示的に私はそれがかなり出回っていますので、validates_confirmation_ofがレール2に導入されたと思いますConfirmationValidator

を使用し、一方、validates方法がちょうどすべてのバリデータを処理するために書かれていることがわかりますしばらく。

ソース比較:

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 
関連する問題