Module: Fanforce::Validations
- Extended by:
- Validations
- Includes:
- Utils
- Included in:
- Validations
- Defined in:
- lib/fanforce/validations/version.rb,
lib/fanforce/validations/validations.rb
Constant Summary collapse
- VERSION =
'0.7.0'
Class Method Summary collapse
Instance Method Summary collapse
- #extract_options!(args) ⇒ Object
- #extract_validation_params(opts) ⇒ Object
- #format_validation_error(opts, fields, default_error_code = nil) ⇒ Object
- #parse_validation_field_name(field, i, opts, params) ⇒ Object
- #raise_validation_errors(opts, errors, default_error_class) ⇒ Object
- #validates_presence_of_all(*args) ⇒ Object (also: #validates_presence_of)
- #validates_presence_of_any(*args) ⇒ Object
- #validates_true(*args) ⇒ Object
Class Method Details
.included(base) ⇒ Object
8 |
# File 'lib/fanforce/validations/validations.rb', line 8 def self.included(base) base.extend(self) end |
Instance Method Details
#extract_options!(args) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/fanforce/validations/validations.rb', line 88 def (args) if args.last.is_a?(Hash) opts = args.pop.symbolize_keys if is_present?(opts[:field]) and opts[:fields].is_a?(Array) opts[:fields] << opts.delete(:field) elsif is_present?(opts[:field]) opts[:fields] = [opts.delete(:field)] end return opts elsif args.last.is_a?(::String) {message: args.pop.to_s} else {} end end |
#extract_validation_params(opts) ⇒ Object
10 11 12 13 14 |
# File 'lib/fanforce/validations/validations.rb', line 10 def extract_validation_params(opts) return opts.delete(:params) if is_present?(opts[:params]) return self.params if self.respond_to?(:params) Fanforce.env[:request_params] || {} end |
#format_validation_error(opts, fields, default_error_code = nil) ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/fanforce/validations/validations.rb', line 75 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), code: is_present?(opts[:code]) ? opts[:code] : default_error_code, message: opts[:message] } fields.is_a?(Array) ? error.update(fields: fields) : error.update(field: fields) end |
#parse_validation_field_name(field, i, opts, params) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/fanforce/validations/validations.rb', line 16 def parse_validation_field_name(field, i, opts, params) name = opts[:fields][i] if is_present?(opts[:fields]) name = field if is_blank?(name) and field.is_a?(Symbol) name = :unknown if is_blank?(name) name.to_sym end |
#raise_validation_errors(opts, errors, default_error_class) ⇒ Object
84 85 86 |
# File 'lib/fanforce/validations/validations.rb', line 84 def raise_validation_errors(opts, errors, default_error_class) raise (opts[:error_class] || default_error_class).new(*errors) end |
#validates_presence_of_all(*args) ⇒ Object Also known as: validates_presence_of
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fanforce/validations/validations.rb', line 23 def validates_presence_of_all(*args) opts = (args) params = extract_validation_params(opts) fields_to_validate = args.is_a?(Array) ? args : [args] invalid_fields = [] fields_to_validate.each_with_index do |field_to_validate, i| if !(field_to_validate.is_a?(Symbol) ? is_present?(params[field_to_validate]) : is_present?(field_to_validate)) invalid_fields << parse_validation_field_name(field_to_validate, i, opts, params) end end 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 |
#validates_presence_of_any(*args) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/fanforce/validations/validations.rb', line 41 def validates_presence_of_any(*args) opts = (args) params = extract_validation_params(opts) fields_to_validate = args.is_a?(Array) ? args : [args] invalid_fields = [] fields_to_validate.each_with_index do |field_to_validate, i| if !(field_to_validate.is_a?(Symbol) ? is_present?(params[field_to_validate]) : is_present?(field_to_validate)) invalid_fields << parse_validation_field_name(field_to_validate, i, opts, params) end end return true if invalid_fields.size < fields_to_validate.size errors = [format_validation_error(opts, invalid_fields, :invalid_data)] raise_validation_errors(opts, errors, Fanforce::Error::BadRequest) end |
#validates_true(*args) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fanforce/validations/validations.rb', line 58 def validates_true(*args) opts = (args) params = extract_validation_params(opts) bools_to_validate = args.is_a?(Array) ? args : [args] invalid_fields = [] bools_to_validate.each_with_index do |bool_is_true, i| if !bool_is_true invalid_fields << parse_validation_field_name(nil, i, opts, nil) end 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 |