def call(target)
value = target.validation_property_value(field_name)
return true if optional?(value)
return true if @options[:set].include?(value)
n = 1.0/0
set = @options[:set]
msg = @options[:message]
if set.is_a?(Range)
if set.first != -n && set.last != n
error_message = msg || ValidationErrors.default_error_message(:value_between, field_name, set.first, set.last)
elsif set.first == -n
error_message = msg || ValidationErrors.default_error_message(:less_than_or_equal_to, field_name, set.last)
elsif set.last == n
error_message = msg || ValidationErrors.default_error_message(:greater_than_or_equal_to, field_name, set.first)
end
else
error_message = msg || ValidationErrors.default_error_message(:inclusion, field_name, set.to_a.join(', '))
end
add_error(target, error_message, field_name)
false
end