2014-10-02 47 views
2

如何讀取carrierwave上傳器中的當前用戶?從本質上講,在WhateverUploader.rb我有 -Rails,carrierwave,並將用戶名添加到文件名

def store_path(for_file = filename) 
    "uploads/#{Rails.env}/#{model.class.to_s.underscore.pluralize}/#{mounted_as}/#{model.id}/#{for_file}" 
end 

...我想放像

.../#{current_user.username}/... 

我使用的設計,而是CURRENT_USER似乎並不可用在上傳者。是否合理做類似

.../#{User.find(Book.find(Chapter.find(model.id).book_id).user_id).username}/... 

還是我堅果?它工作正常,但似乎不是最佳的。

回答

1

我已經結束了使用此 -

def store_dir 

    #path will be user_id-username/book_id-title/Assets/filename.ext 

    user_id = Book.find_by_id(model.id).user_id 
    username = User.find_by_id(user_id).username 
    book_id = model.id 
    title = Book.find_by_id(book_id).title 

    return "uploads/#{Rails.env}/#{user_id}-#{username}/#{book_id}-#{title}/Assets/" 
    end 

...因爲它似乎更容易向下突破的路徑成組件,然後在路徑再次將它們結合起來。

相關問題