Как Вы проверили бы, является ли файл изображением? Я думаю, что Вы могли использовать метод как так:
def image?(file)
file.to_s.include?(".gif") or file.to_s.include?(".png") or file.to_s.include?(".jpg")
end
Но это могло бы быть немного неэффективно и не корректно. Какие-либо идеи?
(Я использую плагин скрепки, btw, но я не вижу методов, чтобы определить, является ли файл изображением в скрепке),
Я бы использовал гем ruby-filemagic , который является связыванием Ruby для libmagic .
imagemagick имеет команду под названием identity, которая обрабатывает это - проверьте в документации по скрепке - возможно, есть способ обработать это из вашего приложения RoR.
Поскольку вы используете скрепку, вы можете использовать встроенный метод validates_attachment_content_type в модели, где используется has_attached_file, и указать, какие типы файлов вы хотите позволить.
Вот пример из приложения, в котором пользователи загружают аватар для своего профиля:
has_attached_file :avatar,
:styles => { :thumb => "48x48#" },
:default_url => "/images/avatars/missing_avatar.png",
:default_style => :thumb
validates_attachment_content_type :avatar, :content_type => ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"]
Документация находится здесь http://dev.oughttbot.com/paperclip/classes/Paperclip/ClassMethods.html