Может ли Paperclip автоматически очищать имена файлов?

Я использую Thoughtbot Драгоценный камень скрепки для обработки загрузки файлов.

Я нахожу, что когда я загружаю файл с пробелами в имени файла, он запоминается с заменяемыми пробелами символами подчеркивания.

Это хорошо.

Я также попытался загрузить файл со специальными символами типа ~ и т.д., и все они были заменены символами подчеркивания.

Великий. Именно то, что я хочу.

Но почему это происходит?

Все, что я делаю в своей модели, это...

has_attached_file(
    file_somefile,
    :path => ":rails_root/public/system/other/path/elements/:basename.:extension"
)

Является ли это поведение по умолчанию для Паперклипа?

Ответ 1

ОК, после небольшого поиска, я нашел этот пост в блоге, в котором говорится внизу, что Paperclip фактически выполняет некоторую минимальную обработку имен файлов.

Ответ 2

Чтобы добавить немного больше информации, это происходит в Paperclip:: Attachment # cleanup_filename, в котором по умолчанию ограниченные_characters/[& $+,/:; =? @< > [] {}\|\\^ ~% #]/заменены символами подчеркивания.

Это не задокументировано, но вы можете указать опцию: limited_characters для скрепки для замены того, что заменяется, например.

class User < ActiveRecord::Base
  attr_accessible :avatar
  has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@'
end