2014-05-13 1 views
0

Mongoid 및 CarrierWave와 함께 Sinatra를 사용하고 있습니다. /public/attachments/DOCUMENTS_ID에 문서의 첨부 파일을 저장해야합니다.Mongo 객체의 ID가 CarrierWave의 업로딩 디렉토리 이름입니다.

몽고 문서의 모델 :

class Dcmnt 
    include Mongoid::Document 
    store_in collection: 'dcmnts' 
    field :published, type: Boolean 
    field :name,  type: String 
    field :description, type: String 
    field :additional, type: String 
    field :created_at, type: Date 
    mount_uploader :attachment, Uploader, type: String 
end 

그리고 행동의 코드 :이 같은 언 로더를 설정하고있어

post '/admin/create' do 
    params.delete 'submit' 
    d = Dcmnt.new(
     :published => params[:published], 
     :name  => params[:name], 
     :description => params[:description], 
     :additional => params[:additional], 
     :created_at => Time.now 
    ) 
    d.attachment = params[:photos] 
    d.save 
    end 

: 그것은 '아무튼

class Uploader < CarrierWave::Uploader::Base 
    storage :file 
    def store_dir 
    'public/attachments/' + d.id 
    end 
end 

일부 작품 amzaing 이유. 이 기능을 구현하는 데 도움을 줄 수 있습니까? CarrierWave 속성

답변

1

액세스 모델은 모델 핵심 단어를 통해 제공되는

class Uploader < CarrierWave::Uploader::Base 
    storage :file 
    def store_dir 
    'attachments/' + model.id 
    end 
end