Rails 3.1 Paperclip - 组织上传文件的文件夹结构的更好方法?

时间:2012-01-10 21:31:03

标签: ruby-on-rails upload paperclip asset-pipeline

我正在使用Paperclip来保存Rails 3.1应用程序的文件。一切都运行正常,虽然我有点困惑的事实是一切都保存到公共文件夹..

我有这种结构:

class Photo < ActiveRecord::Base  
 belongs_to :photoable, :polymorphic => true
 has_attached_file :photo,  :styles => { :large => "800x600", :medium => "400x300>", :thumb => "100x100>"  }    
end  

class Project < ActiveRecord::Base
 attr_accessible :projectname, :photos_attributes
 has_many :photos, :as => :photoable 
 accepts_nested_attributes_for :photos, :allow_destroy => true  
end

显然,可能还有其他模型也有很多:照片,:as =&gt; :可照片

然后,如果我上传照片,它会保存到公共/系统/照片/ 1(或/ 2等)。一切正常,但我想知道是否有更好的方法来组织它(这样文件夹结构有点人性化(有用户名,项目名称等)?

如果我错了,还要纠正我,但我认为文件应该转到资产而不是公共文件夹?

由于

2 个答案:

答案 0 :(得分:2)

这是:has_atached_file中的:path选项。查看自述文件的“存储”部分: https://github.com/thoughtbot/paperclip

  

默认情况下,分配为附件的文件位于   has_attached_file的:path选项指定的目录。通过   默认,这个位置是   :RAILS_ROOT /公/系统/:附件/:ID /:款式/:文件名。这个   选择位置是因为在标准的Capistrano部署中,   public / system目录符号链接到应用程序的共享目录,   意味着它将在部署之间存活。例如,使用它   :path,你可能有一个文件

答案 1 :(得分:0)

用户上传的内容应该进入公共/系统文件夹,而样式表,图片和javascripts等设计元素应该放在app / assets对应的文件夹中。

如果你想在文件路径中添加一些默认不支持的附加信息(比如用户名),那么你应该看一下paperclip插值(https://github.com/thoughtbot/paperclip/wiki/Interpolations