2011-12-04 21 views
5

Quiero hacer un hallazgo en Rails básicamente para verificar si un objeto ya existe en la base de datos. Tengo una CSV, que tengo poco control sobre el formato de la misma. Tengo un campo en el CSV llamado 'nombre', que es el ejemplo que tengo contiene 5 palabras. Este campo contiene un nombre y una dirección, pero no está limitado a ningún formato.Rieles encontrados por parte de la cadena

En mi base de datos tengo campos como 'nombre', 'dirección 1', 'dirección 2'. Básicamente, quiero ver si alguna parte del campo de nombre en el archivo CSV coincide con cualquiera de los campos en mi base de datos.

Sé que tengo que hacer un comando como SQL probablemente, pero no estoy seguro de cómo hacerlo.

Respuesta

24

Puede hacerlo utilizando LIKE:

User.where('name LIKE ?', "%#{@user.name}%") 

La sintaxis de una declaración LIKE SQL para encontrar un campo para un fragmento de cadena dada es rodear el fragmento de cadena con % caracteres, por lo que el SQL resultante será algo como esto

"SELECT \"users\".* FROM \"users\" WHERE (name LIKE '%Rob Phillips%')"