Question

J'ai besoin de faire une portée où je trouve tous les fichiers qui ont certaines extensions - ma tentative non fonctionnelle actuelle est la suivante:

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

Cette tentative me donne des erreurs - comment créez-vous des lunettes où les conditions ne sont pas seulement une requête SQL droite?

Était-ce utile?

La solution

Vous devez coder directement ces critères.

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

Je recommande de stocker l'extension de fichier ou le type MIME comme sa propre colonne, et l'interrogation contre cela. Il sera plus performant que d'utiliser des fonctions de chaîne. L'implémentation elle-même serait similaire, mais plus simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top