Вопрос

Мне нужно сделать область, где я нахожу все файлы, которые имеют определенные расширения - моя текущая нефункциональная попытка:

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 в качестве собственного столбца, и запросить его.Это будет более исполнительным, чем использование строковых функций.Сама реализация будет похожа, но проще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top