Product Assembly

Build Status
Code Climate

Create a product which is composed of other products.


  1. Add this extension to your Gemfile with this line: ruby gem 'spree_product_assembly', github: 'spree-contrib/spree-product-assembly', branch: 'X-X-stable'

The branch option is important: it must match the version of Spree you're using.
For example, use 3-0-stable if you're using Spree 3-0-stable or any 3.0.x version.

  1. Install the gem using Bundler:
    bundle install

  2. Copy & run migrations
    bundle exec rails g spree_product_assembly:install

  3. Restart your server

If your server was running, restart it so that it can find the assets properly.


To build a bundle (assembly product) you'd need to first check the "Can be part" flag on each product you want to be part of the bundle. Then create a product and add parts to it. By doing that you're making that product an assembly.

The store will treat assemblies a bit different than regular products on checkout.
Spree will create and track inventory units for its parts rather than for the product itself.
That means you essentially have a product composed of other products. From a customer perspective it's like they are paying a single amount for a collection of products.

Using with spree_wombat

If you use this with spree_wombat make sure that you add this extension after spree_wombat in your Gemfile

This extension provides a specific serializer for shipments assembly_shipment_serializer, to use this in your Spree storefront make sure you configure spree_wombat like this:

config.payload_builder = {
  'Spree::Shipment' => {
    serializer: 'Spree::Wombat::AssemblyShipmentSerializer',
    root: 'shipments'


See corresponding guidelines.

Copyright (c) 2007-2015 Spree Commerce Inc. and contributors, released under the New BSD License


No comments yet

Please login to add comment.