layout: post title: “paperclip上传文件” date: 2013-01-19 16:26 comments: true

categories:

最头疼文件上传什么的了,不知道怎么处理比较好。。。不知道什么最佳实践

不过最近遇到这样的需求,要上传文件,而且是各种类型的,可把我给“吓坏了”,没办法,到网上搜索了一下,很多都是用Paperclip这个gem, 顺便问了在这方面有经验同事,也说可以尝试一下。

看了一下Paperclip的文档,上面说得不是很详细,但也基本够用;需要定制化的,那得自己看代码、扩展改gem了。

以下是我需要的基本操作流程:

Polymorphic Associations

      If you have an instance of the Picture model, you can get to its parent via @picture.imageable. To make this work, you need to declare both a foreign key column and a type column in the model that declares the polymorphic interface:

默认存放的路径是:

    "/system/:class/:attachment/:id_partition/:style/:filename"

可视情况修改:

    Paperclip.interpolates :parent_id do |a, s|

        a.instance.attachable.id # a.class  ===>>  Paperclip::Attachment

    end

所以可以自定义为:

    has_attached_file :data, 
    :url => "/system/blogs/:parent_id/:attachment/:id_partition/:style/:filename"