Escopo incomum em Rails
-
12-11-2019 - |
Pergunta
Preciso fazer um escopo onde encontre todos os arquivos que possuem determinadas extensões - minha tentativa não funcional atual é esta:
scope :visual, where(%w[.gif .jpg .jpeg .tif .tiff].include? File.extname(item_file_name), true)
Esta tentativa me dá erros - como você cria escopos onde as condições não são apenas uma consulta SQL direta?
Solução
Você precisa codificar esses critérios diretamente.
scope :visual, where("RIGHT(item_file_name,3) IN (?)
OR RIGHT(item_file_name,4) IN (?)",
['gif', 'jpg', 'tif'],
['jpeg', 'tiff'])
Eu recomendo armazenar a extensão do arquivo ou tipo MIME como sua própria coluna e consultá-la.Será mais eficiente do que usar funções de string.A implementação em si seria semelhante, mas mais simples.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow