Mam mechanizm Paperclipa, który waliduje plik po wielkości, typie pliku (czyli sprawdza rozszerzenie). Mechanizm działa ogólnie dobrze ale jak zwykle diabeł tkwi w szczegółach. Przy ręcznym testowaniu formularza wykonałem następujące testowe pliki:
- plik tekstowy bez rozszerzenia
- rozszerzenie pliku tekstowego ustawiłem na jpg
W pierwszym wypadku model wychwycił walidację obrazka i nie przepuścił pliku, w drugim przypadku plik przeszedł, ale z oczywistych powodów wyświetla się na stronie brak obrazka.
Pomimo wystąpienia błędu Paperclip::NotIdentifiedByImageMagickError plik jest zapisywany mimo, że nie powinien:
Command :: identify -format %wx%h '/tmp/stream20120329-21890-42cx8.jpg[0]'
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream20120329-21890-42cx8.jpg is not recognized by the 'identify' command.>
Czy istnieje możliwość aby Paperclip sprawdzał czy obrazek (plik z rozszerzeniem graficznym) jest naprawdę obrazkiem ?