rails paperclip has_attached_file路径:slug?

时间:2013-09-07 04:00:48

标签: ruby-on-rails paperclip

我正在尝试将我附加的文件保存到s3 - 但是不是将:id保存在路径中,我想使用:slug,它是从friendly_id gem写入数据库的。但是当我把:slug放在路径中时,我得到一个名为:slug的文件夹,而不是实际的:slug变量。

我很好奇如何最好地将:slug插入到保存图像的位置。关于调用has_attached_file时哪些参数暴露给回形针很好奇。

1 个答案:

答案 0 :(得分:2)

您必须使用回形针插值。使用paperclip 3.5.2

对我有用
class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: [ :slugged, :finders ]

  Paperclip.interpolates :slug do |attachment, style|
    attachment.instance.slug
  end

  has_attached_file :picture,
    styles: { large: "512x512!", medium: "256x256!", thumb: "128x128!" },
    default_url: "/images/:class/:style/missing.png",
    hash_secret: "xxxxxxxxxxxxxxxxxxxxxx",
    url: "/system/:class/:attachment/:slug/:style/:hash.:extension",
    path: ":rails_root/public/system/:class/:attachment/:slug/:style/:hash.:extension"
end

它还演示了使用散列文件名来隐藏文件名中的私人信息。除非您在网络服务器中设置一些路由以从网址获取文件名,否则网址和路径必须匹配。