Publicidad:
La Coctelera

Rescue true.

Para los caballeros que siempre dicen nil!

31 Marzo 2009

Rails + MySQL: Buscador con y sin tildes

Para empezar metidos en harina el primer post sobre un tema controvertido. Cada cual tiene su manera de hacerlo y para no ser menos que el resto yo tengo la mia. No se si será la mas correcta o si habra mejores formas, pero esta es rapida, barata y funciona.

class Usuario
   #Busca usuarios por nombre y apellidos
   def self.buscar(texto)
     Usuario.find(:all, :conditions => ["concat(nombre,\" \",apellidos) REGEXP '?'", Usuario.expresion_regular_para_sql(texto)])
   end
 
   #Sustituye las vocales y vocales acentuada por la cadenda "[vocal,vocal_acentuada]"
   def self.expresion_regular_para_sql texto
     #Creamos un array con las vocales y su acentuacion
     textos_a_sustituir = %w(aá eé ií oó uú)
     textos_a_sustituir.each do |cad|
       #Con el gsub y la expresion regular cambiamos por la expresion regular de sql: ej para aá -> texto.downcase.gsub!(/[aá]/,"[aá]")
       texto.gsub!(/[#{cad}]/,"[#{cad}]")
     end
   end
 end

Lo único que hago es crear la expresion regular sql que me permite buscar con y sin tildes, esto es convertir "Jorge" en "J[oó]rg[eé]". El concat en las conditions permite hacer busquedas del tipo "Jorge Fernández" cuando el nombre y los apellidos estan en campos separados.

Espero que a vosotros tambien os funcione! Por cierto el código esta escrito de memoria y sin ejecutarlo, así que quizá teng algún errorcillo! Si es así hacedmelo saber por favor!

Tags: rails, mysql, sql, ruby

servido por x-or sin comentarios compártelo

sin comentarios · Escribe aquí tu comentario

Escribe tu comentario


Sobre mí

Fotos

x-or todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Categorías

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera