我遇到了一个问题,不同用户上传的文件名称被Polymorphic Paperclip插件覆盖。我想做的是将当前用户的ID注入URL /路径。这可能吗?生成随机名称会更好吗?
以下是我当前的:asset.rb中的url和:path参数值:
:url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"
我希望能够做到的是:
:url => "/assets/#{current_users_id}/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/#{current_users_id}/:id/:style/:basename.:extension"
答案 0 :(得分:6)
使用Paperclip插值:
file config / initializers / paperclip.rb:
module Paperclip
module Interpolations
def user_id(attachment, style)
current_user.id
end
end
end
has_ attached_file选项:
:url => "/assets/:user_id/:id/:style/:filename"
(语法从Paperclip 2.x更改为2.3;:路径不是必需的;使用最新版本并查看源代码,它已有详细记录。)
答案 1 :(得分:0)
每当我看到单词random并且它与字符串有关时,我认为是GUID。也许他们可以为你工作。
答案 2 :(得分:0)
对我而言,它不能通过paperclip.rb工作,但它的工作原理如下:
在模型类中:
class Micropost < ApplicationRecord
Paperclip.interpolates :user_id do |attachment, style|
attachment.instance.user_id
end
has_attached_file :pic1,
:url => "/Microposts/:user_id/:style/:basename.:extension"
如果你想通过Paperclip插值来做,你应该找到这样的路径: 首先找到gem文件路径。在您的终端输入:
$ gem env
然后,它会在&#34; - GEM路径中显示一条路径:&#34; 就我而言,这就是道路:
:/usr/local/lib/ruby/gems/2.4.0/gems/paperclip-5.0.0/lib/paperclip
在这个方向你可以找到&#34; paperclip.rb&#34; 。