使用Polymorphic Paperclip生成唯一的文件路径

use*_*550 3 polymorphism ruby-on-rails paperclip

我遇到了一个问题,不同用户上传的文件名称被Polymorphic Paperclip插件覆盖.我想做的是将当前用户的ID注入URL /路径.这可能吗?生成随机名称会更好吗?

以下是我目前:asset.rb中的url和:path参数值:

:url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

我希望能够做到的是:

:url => "/assets/#{current_users_id}/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/#{current_users_id}/:id/:style/:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

Man*_*rer 6

使用Paperclip插值:

file config/initializers/paperclip.rb:

module Paperclip
  module Interpolations
    def user_id(attachment, style)
      current_user.id
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

has_ attached_file选项:

:url => "/assets/:user_id/:id/:style/:filename"
Run Code Online (Sandbox Code Playgroud)

(语法从Paperclip 2.x更改为2.3;:路径不是必需的;使用最新版本并查看源代码,它已有详细记录.)