module Fend::Plugins::ExternalValidation::ParamMethods
Public Instance Methods
validate_with(validation)
click to toggle source
# File lib/fend/plugins/external_validation.rb, line 63 def validate_with(validation) result = validation.call(value) messages = result.class.ancestors.include?(Fend::Result) ? result.messages : result return if messages.is_a?(Hash) && flat? && invalid? @errors = if @errors.is_a?(Hash) && messages.is_a?(Hash) _deep_merge_messages(@errors, messages) elsif @errors.is_a?(Array) && messages.is_a?(Array) @errors + messages else messages end end
Private Instance Methods
_deep_merge_messages(hash, other_hash)
click to toggle source
# File lib/fend/plugins/external_validation.rb, line 80 def _deep_merge_messages(hash, other_hash) hash.merge(other_hash) do |_, old_val, new_val| if old_val.is_a?(Hash) && new_val.is_a?(Hash) deep_merge(old_val, new_val) elsif old_val.is_a?(Array) && new_val.is_a?(Array) old_val + new_val else new_val end end end