Spree extension to attach documents to a product

Last updated on: April 15 at 12:56 PM

source code bug tracker
2 2 3
owner:  taniarv


Spree_product_documents is an Spree extension to attach documents related to a Product. Spree::Document class inherits from Spree::Resource and use spree_assets table, so no additional tables or assets are required.

This extension is heavily inspired in https://github.com/mosaic/spree_product_documents but has been adapted in order to work with Spree 2.4-stable branch.


Add spree_product_documents to your Gemfile:

gem 'spree_product_documents'

Bundle your dependencies and run the installation generator:


No generator is needed as no additional assets or tables are required.


Currently, this extension supports application/pdf and application/zip content types. If you wish to support other content_types, you can create a new app_configuration_decorator.rb and override defined ones:

Spree::AppConfiguration.class_eval do
preference :allowed_document_content_types, :array, :default => %w(application/pdf application/zip)

and be sure to restart your server.

After installation, a new tab Documents will appear in product tabs. It works exactly the same as images, you can attach as many documents as you want, related to a product or a specific variant. Bear in mind that, nowadays, this extension does not include any overrides in the frontend.


First bundle your dependencies, then run rake. rake will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using rake test_app.

bundle exec rake

When testing your applications integration with this extension you may use it's factories. Simply add this require statement to your spec_helper:

require 'spree_product_documents/factories'

Copyright (c) 2015 Tania Rubio taniarubiov@gmail.com, released under the New BSD License

compatible spree versions
tags spree versions
master ~> 3.0.0
3-0-stable ~> 3.0.0
Tania Rubio