lib/fanforce/validations/validations.rb in fanforce-validations-0.2 vs lib/fanforce/validations/validations.rb in fanforce-validations-0.3
- old
+ new
@@ -34,11 +34,11 @@
return true if invalid_fields.size == 0
errors = invalid_fields.inject([]) {|result, f| result << format_validation_error(opts, f, :missing_field) }
raise_validation_errors(opts, errors, Fanforce::Error::BadRequest)
end
- alias validates_presence_of validates_presence_of_all
+ alias :validates_presence_of :validates_presence_of_all
def validates_presence_of_any(*args)
opts = extract_options!(args)
params = extract_validation_params(opts)
fields_to_validate = args.is_a?(Array) ? args : [args]
@@ -68,9 +68,26 @@
end
return true if invalid_fields.size == 0
errors = invalid_fields.inject([]) {|result, f| result << format_validation_error(opts, f, :invalid_data) }
raise_validation_errors(opts, errors, Fanforce::Error::RequestFailed)
+ end
+
+ def validates_external_id_format(*args)
+ opts = extract_options!(args).merge(:field => :_external_id)
+ params = extract_validation_params(opts)
+ _external_id = args
+
+ if is_present?(_external_id) and !_external_id.is_a?(String)
+ opts[:message] = "id must be a string but was a #{_external_id.class.name}"
+ elsif _external_id.include('/')
+ opts[:message] = 'id cannot contain forward slashes (/)'
+ else
+ return true
+ end
+
+ error = format_validation_error(opts, :_external_id, :invalid_data)
+ raise_validation_errors(opts, [error], Fanforce::Error::RequestFailed)
end
def format_validation_error(opts, fields, default_error_code=nil)
error = {
resource: is_present?(opts[:resource]) ? opts[:resource] : (self.class==Class ? self.name.demodulize.tableize.singularize : self.class.name.demodulize.tableize.singularize),
\ No newline at end of file