module ClientSideValidations::ActiveModel::Validations
Constants
- ATTRIBUTES_DENYLIST
Public Instance Methods
client_side_validation_hash(force = nil)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 55 def client_side_validation_hash(force = nil) _validators.inject({}) do |attr_hash, attr| next attr_hash if ATTRIBUTES_DENYLIST.include?(attr[0]) validator_hash = validator_hash_for(attr, force) if validator_hash.present? attr_hash.merge!(attr[0] => validator_hash) else attr_hash end end end
Private Instance Methods
can_force_validator?(attr, validator, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 149 def can_force_validator?(attr, validator, force) case force when TrueClass true when Hash case force[attr] when TrueClass true when Hash force[attr][validator.kind] else false end else false end end
can_use_for_client_side_validation?(attr, validator, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 91 def can_use_for_client_side_validation?(attr, validator, force) return false if validator_turned_off?(attr, validator, force) result = check_new_record(validator) result &&= validator.kind != :block if validator.options[:if] || validator.options[:unless] check_conditionals attr, validator, force else result end end
check_conditionals(attr, validator, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 113 def check_conditionals(attr, validator, force) return true if validator.options[:if] && will_save_change?(validator.options[:if]) result = can_force_validator?(attr, validator, force) if validator.options[:if] result &&= run_conditionals(validator.options[:if], :if) end if validator.options[:unless] result &&= run_conditionals(validator.options[:unless], :unless) end result end
check_new_record(validator)
click to toggle source
Yeah yeah, new_record? is not part of ActiveModel
:p
# File lib/client_side_validations/active_model.rb, line 105 def check_new_record(validator) (respond_to?(:new_record?) && validator.options[:on] == (new_record? ? :create : :update)) || validator.options[:on].nil? end
extract_force_option(attr, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 82 def extract_force_option(attr, force) case force when FalseClass, TrueClass, NilClass force when Hash extract_force_option(nil, force[attr]) end end
validator_hash_for(attr, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 71 def validator_hash_for(attr, force) attr[1].each_with_object(Hash.new { |h, k| h[k] = [] }) do |validator, kind_hash| next unless can_use_for_client_side_validation?(attr[0], validator, force) client_side_hash = validator.client_side_hash(self, attr[0], extract_force_option(attr[0], force)) if client_side_hash kind_hash[validator.kind] << client_side_hash.except(:on, :if, :unless) end end end
validator_turned_off?(attr, validator, force)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 129 def validator_turned_off?(attr, validator, force) return true if ::ClientSideValidations::Config.disabled_validators.include?(validator.kind) case force when FalseClass true when Hash case force[attr] when FalseClass true when Hash force[attr][validator.kind] == false else false end else false end end
will_save_change?(options)
click to toggle source
# File lib/client_side_validations/active_model.rb, line 109 def will_save_change?(options) options.is_a?(Symbol) && (options.to_s.end_with?('changed?') || options.to_s.start_with?('will_save_change_to')) end