paperclip_database_storage
Adds support for storing a paperclip attachment file contents in a database table.
Requirements
paperclip_database_storage requires Paperclip version >= 3.2.0.
Installation
paperclip_database_storage is distributed as a gem, and that is how it should be used in your app.
Include the gem in your Gemfile
, from rubygems:
gem 'paperclip_database_storage', '>= 3.2.0'
Or, get the master branch from the repository:
gem 'paperclip_database_storage', :git => 'git://github.com/gokuu/paperclip_database_storage.git'
Usage
All you need to do is, when defining a Paperclip attachment, set its :storage
option as :database
:
class MyModel < ActiveRecord::Base
has_attached_file :attachment,
:storage => :database,
:styles => {
:medium => "300x300>",
:thumb => "100x100>"
},
:url => "/:class/:attachment/:id/:style/:basename.:extension"
end
Remarks
The migration defined by paperclip_database_storage
contains several indexes, as every possible combination of the fields that can identify a single attachment. This should help getting an attachment as quickly as possible using any combination of parameters
Limitations
- Paperclip-database currently only supports one database attachment per model.
- Although you can define a custom :url option for getting the attachment, make sure you define one that uniquelly identifies each attachment, otherwise the plugin will raise an Exception.
TO-DO
- Add tests!
- Add support for more than one database attachment per model
- Enable defining a separate table for each different attachment
Copyright (c) 2012 Pedro Rodrigues, released under the MIT license