Sha256: fabdf07ce7ce3486418bf9a3aa6b0030f68636290cd2e9039dda95e5e3d51cd0

Contents?: true

Size: 1.09 KB

Versions: 7

Compression:

Stored size: 1.09 KB

Contents

module Validatable
  class ValidatesConfirmationOf < ValidationBase #:nodoc:
    attr_accessor :case_sensitive

    def initialize(klass, attribute, options={})
      klass.class_eval do
        attr_accessor "_#{attribute}_confirmation"
        alias_method "#{attribute}_confirmation", "_#{attribute}_confirmation"
        alias_method "#{attribute}_confirmation=", "_#{attribute}_confirmation="
      end
      super
      self.case_sensitive = true if self.case_sensitive == nil
    end

    def valid?(instance)
      confirmation_value = instance.send("#{self.attribute}_confirmation")
      return true if allow_nil && confirmation_value.nil?
      return true if allow_blank && (!confirmation_value or (confirmation_value.respond_to?(:empty?) and confirmation_value.empty?))
      return instance.send(self.attribute) == instance.send("#{self.attribute}_confirmation".to_sym) if case_sensitive
      instance.send(self.attribute).to_s.casecmp(instance.send("#{self.attribute}_confirmation".to_sym).to_s) == 0
    end

    def message(instance)
      super || "doesn't match confirmation"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
validatable2-0.0.14 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.13 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.12 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.11 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.10 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.9 lib/validatable/validations/validates_confirmation_of.rb
validatable2-0.0.8 lib/validatable/validations/validates_confirmation_of.rb