CarrierWave
Classier solution for file uploads for Rails, Sinatra and others
This gem provides a simple and extremely flexible way to upload files from Ruby applications. It works well with Rack based web applications, such as Ruby on Rails. CarrierWave gives you a store for permanent storage, and a cache for temporary storage. You can use different stores, including filesystem and cloud storage. Most of the time you are going to want to use CarrierWave together with an ORM. It is quite simple to mount uploaders on columns in your model, so you can simply assign files and get going. Make sure you are loading CarrierWave after loading your ORM, otherwise you'll need to require the relevant extension manually. Now you can cache files by assigning them to the attribute, they will automatically be stored when the record is saved. CarrierWave also has convenient support for multiple file upload fields. Add a column which can store an array. This could be an array column or a JSON column for example. Your choice depends on what your database supports.