diff --git a/lib/liudesk_cmdb/model.rb b/lib/liudesk_cmdb/model.rb index 6f6e41296d6667ab9f55edf877199657edafbc0c..b4e0c3d3db417a1781dba78c57d5c5d5d42da994 100644 --- a/lib/liudesk_cmdb/model.rb +++ b/lib/liudesk_cmdb/model.rb @@ -87,8 +87,16 @@ module LiudeskCMDB if query.is_a? Hash op = query.delete(:op) { :and } op = { or: ",", and: ";" }.fetch(op, ";") + query = query.transform_keys { |k| fields.key?(k) ? fields.dig(k, :name) : k } - query = query.map { |k, v| "#{k}==#{v}" }.join(op) + query = query.map do |k, v| + if v.is_a? Array + v.map { |val| "#{k}==#{val}" }.join(op) + else + "#{k}==#{v}" + end + end + query = query.reject { |v| v.nil? || v.empty? }.join(op) end data = JSON.parse(client.get([api_url, "search"].join("/"), model_version, query: { query: query }))