我正在使用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等)。一切正常,但我想知道是否有更好的方法来组织它(这样文件夹结构有点人性化(有用户名,项目名称等)?
如果我错了,还要纠正我,但我认为文件应该转到资产而不是公共文件夹?
由于
答案 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)