Module: Fend::Plugins::ExternalValidation
- Defined in:
- lib/fend/plugins/external_validation.rb
Overview
‘external_validation` plugin allows you to delegate param validations to external classes/objects.
plugin :external_validation
External validation must respond to ‘call` method that takes param value as an argument and returns error messages either as an array or hash (nested data).
class CustomEmailValidator
def initialize
@errors = []
end
def call(email_value)
@errors << "must be string" unless email_value.is_a?(String)
@errors << "must be unique" unless unique?(email_value)
@errors
end
def unique?(value)
UniquenessCheck.call(value)
end
end
class AddressValidation < Fend
plugin :validation_options
validate do |i|
i.params(:city, :street) do |city, street|
city.validate(type: String)
street.validate(type: String)
end
end
end
class UserValidation < Fend
plugin :external_validation
validate do |i|
i.params(:email, :address) do |email, address|
email.validate_with(CustomEmailValidation.new)
address.validate_with(AddressValidation)
end
end
end
‘validation_options` plugin supports `external_validation`:
email.validate(with: CustomEmailValidation.new)
You are free to combine internal and external validations any way you like. Using one doesn’t mean you can’t use the other.
Defined Under Namespace
Modules: ParamMethods