heartcombo--simple_form/lib/simple_form/helpers/validators.rb

45 lines
1.1 KiB
Ruby
Raw Normal View History

module SimpleForm
module Helpers
module Validators
def has_validators?
2011-12-04 12:14:39 +00:00
@has_validators ||= attribute_name && object.class.respond_to?(:validators_on)
end
2011-09-03 10:28:12 +00:00
private
def attribute_validators
object.class.validators_on(attribute_name)
end
def reflection_validators
reflection ? object.class.validators_on(reflection.name) : []
end
def valid_validator?(validator)
!conditional_validators?(validator) && action_validator_match?(validator)
end
def conditional_validators?(validator)
validator.options.include?(:if) || validator.options.include?(:unless)
end
def action_validator_match?(validator)
return true if !validator.options.include?(:on)
2011-09-03 13:15:43 +00:00
case validator.options[:on]
when :save
true
when :create
!object.persisted?
when :update
object.persisted?
end
end
2011-09-03 13:15:43 +00:00
def find_validator(validator)
attribute_validators.find { |v| validator === v } if has_validators?
2011-09-03 13:15:43 +00:00
end
end
end
end