Class: ValidateResponse
- Inherits:
-
Object
- Object
- ValidateResponse
- Defined in:
- lib/validate-response.rb,
lib/validate-response/version.rb
Overview
Класс приводит к единообразной структуре сообщения об ошибках одного или нескольких объектов ActiveRecord.
Пример использования:
render json: {
result: @user.update_attributes(params[:user]),
validates: ValidateResponse.new(@user.contacts)
}
Поддерживаются объекты разных моделей
a.update_attributes(...)
b.update_attributes(...)
ValidateResponse.new(a, b)
nil - Используется для обозначения new_record записей (еще не сохраненных в базе)
Примеры заполнения:
Пример 1:
ValidateResponse.new(@user.contacts)
Пример 2:
ValidateResponse.new(@room)
Пример 3:
x = ValidateResponse.new()
x << contact1
x << contact2
x << contact3 << contact4
Пример 4 (ручное заполнение):
x = ValidateResponse.new()
x[:users, 1] = {
name: 'ошибка такая-то',
age: ['несоответствие 1', 'несоответствие 2']
}
x[:users, nil] = {
name: 'ошибка такая-то',
age: ['несоответствие 1', 'несоответствие 2']
}
Пример 5 (ручное заполнение):
x = ValidateResponse.new()
x[:users] = {
1 => {
name: 'ошибка такая-то',
age: ['несоответствие 1', 'несоответствие 2']
},
nil => {
name: 'ошибка такая-то',
age: ['несоответствие 1', 'несоответствие 2']
}
}
Defined Under Namespace
Classes: Engine, InvalidErrorsObject
Constant Summary collapse
- VERSION =
'0.0.5'
Instance Method Summary collapse
- #<<(errors_object) ⇒ Object
- #[](*key) ⇒ Object
- #[]=(*key, content) ⇒ Object
- #add(*errors_objects) ⇒ Object
-
#initialize(*errors_objects) ⇒ ValidateResponse
constructor
A new instance of ValidateResponse.
- #to_hash ⇒ Object (also: #to_s, #inspect, #errors)
- #to_json ⇒ Object
Constructor Details
#initialize(*errors_objects) ⇒ ValidateResponse
Returns a new instance of ValidateResponse.
64 65 66 67 |
# File 'lib/validate-response.rb', line 64 def initialize(*errors_objects) @errors = {} add *errors_objects end |
Instance Method Details
#<<(errors_object) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/validate-response.rb', line 95 def <<(errors_object) check_errors_object errors_object return self if errors_object.errors.count.zero? record_type = errors_object.class.name.tableize.to_sym record_id = errors_object.id @errors[record_type] ||= {} @errors[record_type][record_id] ||= {} #@errors[record_type][record_id] = Hash[errors_object.errors] record_errors = (@errors[record_type][record_id] ||= {}) Hash[errors_object.errors].each do |field, | record_errors[field] ||= [] record_errors[field] |= end self end |
#[](*key) ⇒ Object
77 78 79 80 81 82 |
# File 'lib/validate-response.rb', line 77 def [](*key) case key.length when 1 then @errors[key[0].to_sym] when 2 then ((@errors[key[0].to_sym] ||= {})[key[1]] ||= {}) end end |
#[]=(*key, content) ⇒ Object
84 85 86 87 88 89 |
# File 'lib/validate-response.rb', line 84 def []=(*key, content) case key.length when 1 then (@errors[key[0].to_sym] ||= {}).merge!(prepare_group content) when 2 then (@errors[key[0].to_sym] ||= {})[key[1]] = content end end |
#add(*errors_objects) ⇒ Object
91 92 93 |
# File 'lib/validate-response.rb', line 91 def add(*errors_objects) errors_objects.flatten.each{ |errors_object| self << errors_object } end |
#to_hash ⇒ Object Also known as: to_s, inspect, errors
73 74 75 |
# File 'lib/validate-response.rb', line 73 def to_hash @errors end |
#to_json ⇒ Object
69 70 71 |
# File 'lib/validate-response.rb', line 69 def to_json @errors.to_json end |