Необычный объем в рельсах
-
12-11-2019 - |
Вопрос
Мне нужно сделать область, где я нахожу все файлы, которые имеют определенные расширения - моя текущая нефункциональная попытка:
scope :visual, where(%w[.gif .jpg .jpeg .tif .tiff].include? File.extname(item_file_name), true)
.
Эта попытка дает мне ошибки - как вы создаете призывы, где условия не просто прямой запрос SQL?
Решение
Вам нужно исправить эти критерии напрямую.
scope :visual, where("RIGHT(item_file_name,3) IN (?)
OR RIGHT(item_file_name,4) IN (?)",
['gif', 'jpg', 'tif'],
['jpeg', 'tiff'])
.
Я рекомендую сохранить расширение файла или тип MIME в качестве собственного столбца, и запросить его.Это будет более исполнительным, чем использование строковых функций.Сама реализация будет похожа, но проще.
Не связан с StackOverflow