summaryrefslogtreecommitdiff
path: root/app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb')
-rw-r--r--app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb b/app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb
new file mode 100644
index 0000000..ccb483f
--- /dev/null
+++ b/app/decorators/models/solidus_subscriptions/spree/line_item/subscription_line_items_association.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# Each Spree::LineItem can have multiple subscription_line_items. This
+# allows a cart to represent multiple subscriptions to the same item in
+# the same order.
+module SolidusSubscriptions
+ module Spree
+ module LineItem
+ module SubscriptionLineItemsAssociation
+ def self.prepended(base)
+ base.has_many(
+ :subscription_line_items,
+ class_name: 'SolidusSubscriptions::LineItem',
+ foreign_key: :spree_line_item_id,
+ inverse_of: :spree_line_item,
+ dependent: :destroy
+ )
+
+ base.accepts_nested_attributes_for :subscription_line_items
+ end
+ end
+ end
+ end
+end
+
+Spree::LineItem.prepend(SolidusSubscriptions::Spree::LineItem::SubscriptionLineItemsAssociation)