Ответ 1
ОК, после небольшого поиска, я нашел этот пост в блоге, в котором говорится внизу, что Paperclip фактически выполняет некоторую минимальную обработку имен файлов.
Я использую Thoughtbot Драгоценный камень скрепки для обработки загрузки файлов.
Я нахожу, что когда я загружаю файл с пробелами в имени файла, он запоминается с заменяемыми пробелами символами подчеркивания.
Это хорошо.
Я также попытался загрузить файл со специальными символами типа ~
и т.д., и все они были заменены символами подчеркивания.
Великий. Именно то, что я хочу.
Но почему это происходит?
Все, что я делаю в своей модели, это...
has_attached_file(
file_somefile,
:path => ":rails_root/public/system/other/path/elements/:basename.:extension"
)
Является ли это поведение по умолчанию для Паперклипа?
ОК, после небольшого поиска, я нашел этот пост в блоге, в котором говорится внизу, что Paperclip фактически выполняет некоторую минимальную обработку имен файлов.
Чтобы добавить немного больше информации, это происходит в Paperclip:: Attachment # cleanup_filename, в котором по умолчанию ограниченные_characters/[& $+,/:; =? @< > [] {}\|\\^ ~% #]/заменены символами подчеркивания.
Это не задокументировано, но вы можете указать опцию: limited_characters для скрепки для замены того, что заменяется, например.
class User < ActiveRecord::Base
attr_accessible :avatar
has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@'
end