Sha256: 7e442cd4f93a71939a1ea23f7f90440cd816647e5fd7f594ec8c0797b360209f
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true module Phlexi module Form module FieldOptions module Validators private def has_validators? @has_validators ||= object.class.respond_to?(:validators_on) end def attribute_validators object.class.validators_on(key) 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 unless validator.options.include?(:on) case validator.options[:on] when :save true when :create !object.persisted? when :update object.persisted? end end def find_validator(kind) attribute_validators.find { |v| v.kind == kind && valid_validator?(v) } if has_validators? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
phlexi-form-0.3.0.rc1 | lib/phlexi/form/field_options/validators.rb |
phlexi-form-0.2.0 | lib/phlexi/form/field_options/validators.rb |