Module: JsonDeepUpdate
- Defined in:
- lib/json_deep_update.rb,
lib/json_deep_update/version.rb
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
-
.deep_update(data, match_key:, match_value:, update_key:, new_value:) ⇒ Object
Atualizar um valor específico em um JSON aninhado match_key: chave primária a ser verificada match_value: valor da chave primária a ser verificado update_key: chave a ser atualizada new_value: novo valor a ser atribuído à chave Exemplo de uso: Model.deep_update(data, match_key: ‘id’, match_value: 123, update_key: ‘status’, new_value: ‘active’).
Class Method Details
.deep_update(data, match_key:, match_value:, update_key:, new_value:) ⇒ Object
Atualizar um valor específico em um JSON aninhado match_key: chave primária a ser verificada match_value: valor da chave primária a ser verificado update_key: chave a ser atualizada new_value: novo valor a ser atribuído à chave Exemplo de uso: Model.deep_update(data, match_key: ‘id’, match_value: 123, update_key: ‘status’, new_value: ‘active’)
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/json_deep_update.rb', line 16 def self.deep_update(data, match_key:, match_value:, update_key:, new_value:) case data when Hash if data[match_key.to_s] == match_value || data[match_key.to_sym] == match_value data[update_key.to_s] = new_value if data.key?(update_key.to_s) data[update_key.to_sym] = new_value if data.key?(update_key.to_sym) end data.each do |k, v| data[k] = deep_update(v, match_key: match_key, match_value: match_value, update_key: update_key, new_value: new_value) end when Array data.map! do |item| deep_update(item, match_key: match_key, match_value: match_value, update_key: update_key, new_value: new_value) end end data end |