1
レールの組み込み検証関数によれば、以下の2つの方法の違いは何ですか?レールのバリデーションメソッドの異なる形式
validates :password, :confirmation =>true
と
validates_confirmation_of :password
限り私は理解して、最初は単にレールバージョン3で導入されましたか? 私は正しいですか?
レールの組み込み検証関数によれば、以下の2つの方法の違いは何ですか?レールのバリデーションメソッドの異なる形式
validates :password, :confirmation =>true
と
validates_confirmation_of :password
限り私は理解して、最初は単にレールバージョン3で導入されましたか? 私は正しいですか?
両者は同じ正確なことを行いますが、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