FEATURES

Let's assume an model class named Entry, where we want to define the “image” column as a “file_upload” column.

class Entry < ActiveRecord::Base

file_column :image

end

  • every entry can have one uploaded file, the filename will be stored in the “image” column

  • files will be stored in “public/entry/image/<entry.id>/filename.ext”

  • Newly uploaded files will be stored in “public/entry/tmp/<random>/filename.ext” so that they can be reused in form redisplays (due to validation etc.)

  • in a view, “<%= file_column_field 'entry', 'image' %> will create a file upload field as well as a hidden field to recover files uploaded before in a case of a form redisplay

  • in a view, “<%= url_for_file_column 'entry', 'image' %> will create an URL to access the uploaded file. Note that you need an Entry object in the instance variable @entry for this to work.

  • easy integration with RMagick to resize images and/or create thumb-nails.

USAGE

Just drop the whole directory into your application's “vendor/plugins” directory. Starting with version 1.0rc of rails, it will be automatically picked for you by rails plugin mechanism.

DOCUMENTATION

Please look at the rdoc-generated documentation in the “doc” directory.

RUNNING UNITTESTS

There are extensive unittests in the “test” directory. Currently, only MySQL is supported, but you should be able to easily fix this by looking at “connection.rb”. You have to create a database for the tests and put the connection information into “connection.rb”. The schema for MySQL can be found in “test/fixtures/mysql.sql”.

You can run the tests by starting the “*_test.rb” in the directory “test”

BUGS & FEEDBACK

Bug reports (as well as patches) and feedback are very welcome. Please send it to [email protected]