Другие ответы немного устарели из-за изменений в конвейере ресурсов Rails после Rails 4. Следующий код работает в Rails 4 и 5:
Если ваш файл помещен в public, тогда его существование можно проверить с помощью:
# File is stored in ./public/my_folder/picture.jpg
File.file? "#{Rails.public_path}/my_folder/picture.jpg"
Однако, если файл помещен в каталог assets , тогда проверка существования становится немного сложнее из-за активапредварительная компиляция в производственных средах.Я рекомендую следующий подход:
# File is stored in ./app/assets/images/my_folder/picture.jpg
# The following helper could, for example, be placed in ./app/helpers/
def asset_exists?(path)
if Rails.configuration.assets.compile
Rails.application.precompiled_assets.include? path
else
Rails.application.assets_manifest.assets[path].present?
end
end
asset_exists? 'my_folder/picture.jpg'