module Response
def render_json data, status data = JSON.parse(data) if data.is_a?(String) data[:data] = data[:data].map {|e| deleting(e) } if data && data[:data] && !data[:data].empty? data = deleting(data) if data && !data[:data] render json: data, status: status end private def hide_keys [ :password_digest, ] end def dictionary array array.each_with_object({}) do |e, acc| acc[e] = true acc end end def prepare_json collection JSON.parse(collection.to_json).symbolize_keys end def object_delete(json, lookup) json.each do |k, v| if v.is_a?(Hash) json[k] = object_delete(prepare_json(v), lookup) elsif v.is_a?(Array) && v.all? { |f| f.is_a?(Hash) } json[k] = json[k].map {|val| object_delete(prepare_json(val), lookup) } elsif lookup[k] json.delete(k) end end json end def deleting(hash) json = prepare_json(hash) lookup = dictionary(hide_keys) object_delete(json, lookup) end
end