Esto es un poco difícil de explicar y tipo de loco.
Básicamente tengo una tabla de clientes y una tabla de metadatos.
+-----------+ +-------------+
| Customers | | Metadata |
+-----------+ +-------------+
| id | | id |
| name | | customer_id |
+-----------+ | key |
| value |
+-------------+
- +-----------+ +-------------+
- | Customers | | Metadata |
- +-----------+ +-------------+
- | id | | id |
- | name | | customer_id |
- +-----------+ | key |
- | value |
- +-------------+
Los datos de los campos proporciona una API que responde con json. Cada campo puede contener más de un valor, en cuyo caso serán separados por una coma.
Ahora mi código para romper un poco el aspecto de datos como este:
customer.each do |key,value|
if key == CN_CONFIG['primary_key']
#This is unique to all customers.
if value == nil || value == ""
# You have no name!!!!!!!
break
end
if customers.include?(value)
# This is an update
update_c = Customer.find_by_name(value)
customers.delete(value)
else
# This is a create
update_c = nil
customer_name = value
end
end
if !ignore_fields.include?(key)
if list_fields.include?(key)
if value.scan(/,/).size > 0
# We have a list
puts "key: #{key} -- #{value} "
value.split(',').each do |v|
data_set.push({:key=>key,:value=>v.to_s.downcase.strip})
puts " value: #{v.to_s.downcase.strip}"
end
else
data_set.push({:key=>key,:value=>value.to_s.downcase.strip})
puts "key: #{key} | value: #{value.to_s.downcase.strip}"
end
else
data_set.push({:key=>key,:value=>value.to_s.downcase.strip})
puts "key: #{key} | value: #{value.to_s.downcase.strip}"
end
end
end
- customer.each do |key,value|
- if key == CN_CONFIG['primary_key']
- #This is unique to all customers.
- if value == nil || value == ""
- # You have no name!!!!!!!
- break
- end
- if customers.include?(value)
- # This is an update
- update_c = Customer.find_by_name(value)
- customers.delete(value)
- else
- # This is a create
- update_c = nil
- customer_name = value
- end
- end
- if !ignore_fields.include?(key)
- if list_fields.include?(key)
- if value.scan(/,/).size > 0
- # We have a list
- puts "key: #{key} -- #{value} "
- value.split(',').each do |v|
- data_set.push({:key=>key,:value=>v.to_s.downcase.strip})
- puts " value: #{v.to_s.downcase.strip}"
- end
- else
- data_set.push({:key=>key,:value=>value.to_s.downcase.strip})
- puts "key: #{key} | value: #{value.to_s.downcase.strip}"
- end
- else
- data_set.push({:key=>key,:value=>value.to_s.downcase.strip})
- puts "key: #{key} | value: #{value.to_s.downcase.strip}"
- end
- end
- end
No es realmente a importantes a la cuestión aunque.
Qué pregunta es, ¿cómo se aplica un filtro a una tabla de metadatos?
Ejemplo decir algunas de las claves que aparecen en la tabla de metadatos son: género, birth_year, hermanos
Donde:
género = >
m o
fbirth_year = > (cualquier año aaaa)
hermanos = > (un nombre y cada cliente pueden tener número infinito)
(Por cierto no es el lol datos reales)
Ahora lo piensa hacer es grupo todas las claves para obtener todas las claves que se muestran en la tabla de metadatos. Estas se convierten en conjuntos de campo, todos los valores se convierten en casillas de verificación que tienen un menú seleccionar para incluir o excluir los criterios.
Ahora, ¿cómo se escribe una consulta para devolver a todos los clientes que cumplan los criterios?