2014-06-06 5 views
4

CarrierWave는 파일 이름 대신 업로드 된 파일의 전체 경로를 데이터베이스에 저장하고 액세스 할 때마다 파일을 다시 생성 할 수 있습니까?전체 경로를 저장하는 Carrierwave

내가 원하는 이유는 이미 업로드 된 파일을 저장하지 않고 파일을 저장하는 구조를 변경하여 새 위치로 이동할 때까지 변경할 수 있기 때문입니다. 당신의 업 로더에

답변

1

, 당신은이 구조를 가지고 :

class YourUploader < CarrierWave::Uploader::Base 
    ... 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    ... 
end 

난 당신이 전체 경로로 store_dir을 변경하면 당신이 원하는 것을 할 것이라고 생각합니다.

class MyModel 
    before_save do 
    self.content_path ||= "uploads/my_model/contents/#{id}" 
    end 
end 

이 그런 다음 업 로더는 다음과 같이 표시됩니다 :

+0

, 경로입니다 데이터베이스에만 저장되지 않고 파일 이름에만 저장됩니다. – Pablo

+0

데이터베이스에 전체 경로를 저장하면 새 디렉토리 구조를 정의한 후에 데이터베이스에서 모든 파일을 다시 업데이트해야합니다. – cristian

+0

@ Octopu-Paul, 예, 파일 이동 및 데이터베이스에서의 업데이트는 기록. – Pablo

1

내 해결 방법은 별도의 속성에 디렉토리를 저장하는 것입니다 내가 이미 같은 여기서 store_dir을 정의하고 있습니다

class YourUploader < CarrierWave::Uploader::Base 
    ... 

    def store_dir 
    model.content_path 
    end 

    ... 
end 
관련 문제