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