Te traemos la solución a este atascamiento, o por lo menos eso deseamos. Si tienes dudas puedes escribirlo en el apartado de comentarios y sin tardanza
Solución:
Creo que debería ser:
scope :by_name, lambda
En PostgreSQL, la palabra clave ILIKE se puede usar en lugar de LIKE para hacer que la coincidencia no distinga entre mayúsculas y minúsculas de acuerdo con la configuración regional activa. Esto no está en el estándar SQL, pero es una extensión de PostgreSQL.
En MySQL no tienes ILIKE. Consulte los documentos de MySQL en string funciones de comparación.
Prima – también puedes usar Arel. Echar un vistazo:
scope :by_name, lambda
where(Agency.arel_table[:name].matches("%#agency_name%"))
Por qué sí, porque no existe tal cosa como ILIKE
en MySQL. Solamente LIKE
. Es posible que hayas visto ILIKE
como una versión que no distingue entre mayúsculas y minúsculas de LIKE
en PostgreSQL, pero su RDBMS actual es diferente.
Tu mejor apuesta es usar LOWER
en ambos lados para lograr un efecto mayormente equivalente:
.where('LOWER(name) LIKE LOWER(?)', "%#agency_name%")
El crédito para @mu es demasiado corto para su respuesta.
Acuérdate de que tienes concesión de parafrasear si te fue preciso.