Class: SolidusSubscriptions::LineItemBuilder
- Inherits:
-
Object
- Object
- SolidusSubscriptions::LineItemBuilder
- Defined in:
- app/models/solidus_subscriptions/line_item_builder.rb
Instance Attribute Summary collapse
-
#subscription_line_items ⇒ Object
readonly
Returns the value of attribute subscription_line_items.
Instance Method Summary collapse
-
#initialize(subscription_line_items) ⇒ SolidusSubscriptions::LineItemBuilder
constructor
Get a new instance of a LineItemBuilder.
-
#spree_line_items ⇒ Array<Spree::LineItem>
Get a new (unpersisted) Spree::LineItem which matches the details of :subscription_line_item.
Constructor Details
#initialize(subscription_line_items) ⇒ SolidusSubscriptions::LineItemBuilder
Get a new instance of a LineItemBuilder
13 14 15 |
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 13 def initialize(subscription_line_items) @subscription_line_items = subscription_line_items end |
Instance Attribute Details
#subscription_line_items ⇒ Object (readonly)
Returns the value of attribute subscription_line_items.
5 6 7 |
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 5 def subscription_line_items @subscription_line_items end |
Instance Method Details
#spree_line_items ⇒ Array<Spree::LineItem>
Get a new (unpersisted) Spree::LineItem which matches the details of :subscription_line_item
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 21 def spree_line_items line_items = subscription_line_items.map do |subscription_line_item| variant = subscribables.fetch(subscription_line_item.subscribable_id) raise UnsubscribableError.new(variant) unless variant.subscribable? next unless variant.can_supply?(subscription_line_item.quantity) Spree::LineItem.new(variant: variant, quantity: subscription_line_item.quantity) end # Either all line items for an installment are fullfilled or none are line_items.all? ? line_items : [] end |