Class: BetterService::Result
- Inherits:
-
Object
- Object
- BetterService::Result
- Defined in:
- lib/better_service/result.rb
Overview
Result wrapper per le risposte dei service
Fornisce un modo standardizzato per restituire sia la risorsa che i metadata. BetterController può automaticamente unwrappare gli oggetti Result.
Instance Attribute Summary collapse
-
#meta ⇒ Object
readonly
Returns the value of attribute meta.
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
Instance Method Summary collapse
-
#[](key) ⇒ Object?
Accesso Hash-like per compatibilità con BetterController.
-
#action ⇒ Symbol?
L’azione eseguita.
-
#dig(*keys) ⇒ Object?
Accesso nested Hash-like (dig).
-
#errors ⇒ ActiveModel::Errors?
Errori dalla risorsa se disponibili.
-
#failure? ⇒ Boolean
True se l’operazione è fallita.
-
#full_messages ⇒ Array<String>?
I messaggi di errore completi.
-
#initialize(resource, meta: {}) ⇒ Result
constructor
A new instance of Result.
-
#key?(key) ⇒ Boolean
(also: #has_key?)
Verifica esistenza chiave.
-
#message ⇒ String?
Il messaggio dal meta.
-
#success? ⇒ Boolean
True se l’operazione è riuscita.
-
#to_ary ⇒ Array
(also: #deconstruct)
Supporta destructuring: resource, meta = result.
-
#to_h ⇒ Hash
Rappresentazione completa.
-
#validation_errors ⇒ Hash?
Gli errori di validazione.
Constructor Details
#initialize(resource, meta: {}) ⇒ Result
20 21 22 23 |
# File 'lib/better_service/result.rb', line 20 def initialize(resource, meta: {}) @resource = resource = .is_a?(Hash) ? .reverse_merge(success: true) : { success: true } end |
Instance Attribute Details
#meta ⇒ Object (readonly)
Returns the value of attribute meta.
16 17 18 |
# File 'lib/better_service/result.rb', line 16 def end |
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
16 17 18 |
# File 'lib/better_service/result.rb', line 16 def resource @resource end |
Instance Method Details
#[](key) ⇒ Object?
Accesso Hash-like per compatibilità con BetterController
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/better_service/result.rb', line 77 def [](key) case key when :resource then resource when :meta then when :success then success? when :message then when :action then action else [key] end end |
#action ⇒ Symbol?
41 42 43 |
# File 'lib/better_service/result.rb', line 41 def action [:action] end |
#dig(*keys) ⇒ Object?
Accesso nested Hash-like (dig)
92 93 94 95 96 97 98 99 100 |
# File 'lib/better_service/result.rb', line 92 def dig(*keys) return nil if keys.empty? value = self[keys.first] return value if keys.size == 1 return nil unless value.respond_to?(:dig) value.dig(*keys[1..]) end |
#errors ⇒ ActiveModel::Errors?
56 57 58 |
# File 'lib/better_service/result.rb', line 56 def errors resource.respond_to?(:errors) ? resource.errors : nil end |
#failure? ⇒ Boolean
31 32 33 |
# File 'lib/better_service/result.rb', line 31 def failure? !success? end |
#full_messages ⇒ Array<String>?
51 52 53 |
# File 'lib/better_service/result.rb', line 51 def [:full_messages] end |
#key?(key) ⇒ Boolean Also known as: has_key?
Verifica esistenza chiave
105 106 107 |
# File 'lib/better_service/result.rb', line 105 def key?(key) i[resource success action].include?(key) || .key?(key) end |
#message ⇒ String?
36 37 38 |
# File 'lib/better_service/result.rb', line 36 def [:message] end |
#success? ⇒ Boolean
26 27 28 |
# File 'lib/better_service/result.rb', line 26 def success? [:success] == true end |
#to_ary ⇒ Array Also known as: deconstruct
Supporta destructuring: resource, meta = result
62 63 64 |
# File 'lib/better_service/result.rb', line 62 def to_ary [ resource, ] end |
#to_h ⇒ Hash
70 71 72 |
# File 'lib/better_service/result.rb', line 70 def to_h { resource: resource, meta: } end |
#validation_errors ⇒ Hash?
46 47 48 |
# File 'lib/better_service/result.rb', line 46 def validation_errors [:validation_errors] end |