module Formtastic::Inputs::Base::Validations
Public Instance Methods
autofocus?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 181 def autofocus? opt_autofocus = options[:input_html] && options[:input_html][:autofocus] !!opt_autofocus end
column_limit()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 187 def column_limit column.limit if column? && column.respond_to?(:limit) end
limit()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 191 def limit validation_limit || column_limit end
not_required_through_negated_validation!()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 169 def not_required_through_negated_validation! @not_required_through_negated_validation = true end
not_required_through_negated_validation?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 165 def not_required_through_negated_validation? @not_required_through_negated_validation end
optional?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 177 def optional? !required? end
required?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 134 def required? return false if options[:required] == false return true if options[:required] == true return false if not_required_through_negated_validation? if validations? validations.select { |validator| if validator.options.key?(:on) return false if (validator.options[:on] != :save) && ((object.new_record? && validator.options[:on] != :create) || (!object.new_record? && validator.options[:on] != :update)) end case validator.kind when :presence true when :inclusion validator.options[:allow_blank] != true when :length validator.options[:allow_blank] != true && validator.options[:minimum].to_i > 0 || validator.options[:within].try(:first).to_i > 0 else false end }.any? else return responds_to_global_required? && !!builder.all_fields_required_by_default end end
required_attribute?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 161 def required_attribute? required? && builder.use_required_attribute end
responds_to_global_required?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 173 def responds_to_global_required? true end
validation_integer_only?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 119 def validation_integer_only? validation = validations? && validations.find do |validation| validation.kind == :numericality end if validation validation.options[:only_integer] else false end end
validation_limit()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 54 def validation_limit validation = validations? && validations.find do |validation| validation.kind == :length end if validation validation.options[:maximum] || (validation.options[:within].present? ? validation.options[:within].max : nil) else nil end end
validation_max()
click to toggle source
Prefer :less_than_or_equal_to over :less_than, for no particular reason.
# File lib/formtastic/inputs/base/validations.rb, line 88 def validation_max validation = validations? && validations.find do |validation| validation.kind == :numericality end if validation # We can't determine an appropriate value for :greater_than with a float/decimal column raise IndeterminableMaximumAttributeError if validation.options[:less_than] && column? && [:float, :decimal].include?(column.type) if validation.options[:less_than_or_equal_to] return (validation.options[:less_than_or_equal_to].call(object)) if validation.options[:less_than_or_equal_to].kind_of?(Proc) return (validation.options[:less_than_or_equal_to]) end if validation.options[:less_than] return ((validation.options[:less_than].call(object)) - 1) if validation.options[:less_than].kind_of?(Proc) return (validation.options[:less_than] - 1) end end end
validation_min()
click to toggle source
Prefer :greater_than_or_equal_to over :greater_than, for no particular reason.
# File lib/formtastic/inputs/base/validations.rb, line 66 def validation_min validation = validations? && validations.find do |validation| validation.kind == :numericality end if validation # We can't determine an appropriate value for :greater_than with a float/decimal column raise IndeterminableMinimumAttributeError if validation.options[:greater_than] && column? && [:float, :decimal].include?(column.type) if validation.options[:greater_than_or_equal_to] return (validation.options[:greater_than_or_equal_to].call(object)) if validation.options[:greater_than_or_equal_to].kind_of?(Proc) return (validation.options[:greater_than_or_equal_to]) end if validation.options[:greater_than] return (validation.options[:greater_than].call(object) + 1) if validation.options[:greater_than].kind_of?(Proc) return (validation.options[:greater_than] + 1) end end end
validation_step()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 108 def validation_step validation = validations? && validations.find do |validation| validation.kind == :numericality end if validation validation.options[:step] || (1 if validation_integer_only?) else nil end end
validations()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 24 def validations @validations ||= if object && object.class.respond_to?(:validators_on) object.class.validators_on(attributized_method_name).select do |validator| validator_relevant?(validator) end else nil end end
validations?()
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 130 def validations? validations != nil end
validator_relevant?(validator)
click to toggle source
# File lib/formtastic/inputs/base/validations.rb, line 34 def validator_relevant?(validator) return true unless validator.options.key?(:if) || validator.options.key?(:unless) conditional = validator.options.key?(:if) ? validator.options[:if] : validator.options[:unless] result = if conditional.respond_to?(:call) && conditional.arity > 0 conditional.call(object) elsif conditional.respond_to?(:call) && conditional.arity == 0 object.instance_exec(&conditional) elsif conditional.is_a?(::Symbol) && object.respond_to?(conditional) object.send(conditional) else conditional end result = validator.options.key?(:unless) ? !result : !!result not_required_through_negated_validation! if !result && [:presence, :inclusion, :length].include?(validator.kind) result end