2014-11-08 1 views
0

내 웹 플랫폼은 우리 협회가 프로젝트를 관리하는 데 도움이됩니다. 많은 문서가 플랫폼에 의해 자동으로 생성되고, 멤버가 생성하여 결국 다운로드를 확인하고 다시 업로드합니다. 우리는 또한 서명 날짜, 독서와 같은 다른 정보를 추적 할 필요가 있습니다.생성/다운로드/업로드 및 상태가있는 레일 파일 저장

현재 이러한 문서를 나타내는 데 기본 클래스가 사용되며,이 기본 클래스는 우리가 사용하는 모든 문서 유형을 정의하도록 상속됩니다 (예 : document 자동 생성 가능 여부, 업로드 가능 여부 등). 파일은 레일스 앱 폴더 외부에 저장해야합니다. 전체 파일 이름/경로/생성은 모든 상속 된 클래스에 정의됩니다.

paperclip/carrierwave로이를 쉽게 수행 할 수있는 방법이 있습니까? 아니면 차라리 직접 구현해야합니까? (결국은 보석으로 만든 보석의 소스 코드에서 영감을 얻으시겠습니까?)

이 보석들은 내가하고 싶은 일에 너무 제한적일 수 있습니다. 예를 들면 : 파일을 자동 생성 할 때, 결국 기존 파일을 덮어 씁니다. 이것은 paperclip/carrierwave에서 엉망이 될 가능성이 있습니까? 또는 의도 한대로 작동하도록 추가 작업을해야합니까?

참고 : mongoid와 함께 레일 4.1을 사용하고 있습니다.

답변

0

그래서 Carrierwave를 사용하기로 결정했습니다. 예상 한대로 다른 보석을 사용하여 파일을 생성하는 것만으로는 충분하지 않았습니다. 내 컨트롤러에 따라서

, 파일이 생성 된 후, 내가 명시 적으로 같은 장소에서 같은 파일을 덮어 carrierwave 알려야합니다 : document_file 내 문서 클래스의 mount_uploader :document_file, DocumentFileUploader입니다

def generate_document 
    if @doc.generate_document # Generate the file and store it 
     flash.notice = "Sir yes sir ! #{t(@doc.human_name)} successfully generated !" 

     # Must do this because otherwise file isn't recognised by carrierwave : 
     @doc.document_file = File.open(@doc.full_path) 

     @doc.save! 
    else 
     flash.alert = "Krap, it failed..." 
    end 
    redirect_to ... 
end 

않는 한 누군가가 더 나은 답을 제공 할 것이고, 저는 광산을 선택할 것입니다.