Faça o upload de um arquivo para um diretório fora do Rails Root com o acessório_fu
-
21-09-2019 - |
Pergunta
Estou tentando usar o apetlement_fu para fazer upload de arquivos para um diretório fora do RAILS_ROOT
. Eu quero que os arquivos sejam salvos para ~/APP_NAME/uploads/
para que eles possam ser aprovados/rejeitados antes de se tornarem publicamente disponíveis. Eu tentei a seguinte configuração para has_attachment
:
has_attachment :storage => :file_system,
:path_prefix => "~/APP_NAME/uploads/",
:max_size => 5.megabytes
Infelizmente, essa configuração simplesmente cria o ~/APP_NAME/uploads/
Estrutura do diretório em RAILS_ROOT
. Qualquer maneira de salvar o arquivo fora de RAILS_ROOT
?
Solução 2
Encontrei um método alternativo que me combina melhor do que usar nomes de caminho relativos. Eu adicionei um método chamado full_filename
para minha aula de apego:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end
Outras dicas
Provavelmente, esse não é um problema de anexo-FU, mas como o Ruby lida com a E/S do arquivo, bem como como os arquivos são armazenados no Unix.
Por exemplo, se o seu aplicativo vive, digamos, ~/Usuários/RON/APP_NAME
Se você alterar o código acima:
:path_prefix => "~/APP_NAME/uploads/"
Para:
:path_prefix => "../#{RAILS_ROOT}/uploads"
Os arquivos seriam armazenados em uma pasta chamada "uploads" em ~/usuários/ron/uploads. O ".. ../" significa um diretório acima da raiz dos trilhos atuais. Se você quiser subir dois diretórios, seria "../../" e assim por diante.
Mas isso apenas aborda a navegação hierárquica. Se você quiser dizer ao anexo-FU para armazenar arquivos em um diretório codificado no seu sistema de arquivos, você pode dar um caminho de arquivo como "~/usuários/ron/app_name/uploads", mas lembre O Way é quebradiço e pode ser um ponto de dor no futuro, caso o seu armazenamento de arquivos mude.
Espero que ajude.