Pregunta

Necesito hacer un alcance donde encuentro todos los archivos que tienen ciertas extensiones: mi intento actual no funcional es este:

scope :visual, where(%w[.gif .jpg .jpeg .tif .tiff].include? File.extname(item_file_name), true)

Este intento me da errores: ¿cómo crea los ámbitos donde las condiciones no son solo una consulta SQL recta?

¿Fue útil?

Solución

Necesitas codificar estos criterios directamente.

scope :visual, where("RIGHT(item_file_name,3) IN (?)
                      OR RIGHT(item_file_name,4) IN (?)",
               ['gif', 'jpg', 'tif'],
               ['jpeg', 'tiff'])

Recomiendo almacenar la extensión de archivo o el tipo MIME como su propia columna, y consultando eso.Será más actor de lo que usar funciones de cadena.La implementación en sí sería similar, pero más sencilla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top