2014-10-02 30 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 

...因为它似乎更容易向下突破的路径成组件,然后在路径再次将它们结合起来。

相关问题