Module: Spree::Order::Digital
- Included in:
- Spree::Order
- Defined in:
- app/models/spree/order/digital.rb
Instance Method Summary collapse
- #create_digital_links ⇒ Object
-
#digital? ⇒ Boolean
Returns true if all order line items are digital.
-
#digital_line_items ⇒ Array<Spree::LineItem>
Returns all line items with digital assets.
-
#digital_links ⇒ Array<Spree::DigitalLink>
Returns all digital links for the order.
-
#some_digital? ⇒ Boolean
Returns true if any order line item is digital.
-
#with_digital_assets? ⇒ Boolean
Returns true if any order line item has digital assets.
Instance Method Details
#create_digital_links ⇒ Object
51 52 53 54 55 56 57 |
# File 'app/models/spree/order/digital.rb', line 51 def create_digital_links digital_line_items.includes(variant: :digitals).each do |line_item| line_item.variant.digitals.each do |digital| line_item.digital_links.create!(digital: digital) end end end |
#digital? ⇒ Boolean
Returns true if all order line items are digital
7 8 9 10 11 12 13 |
# File 'app/models/spree/order/digital.rb', line 7 def digital? if item_count.zero? || line_items.empty? false else line_items.includes(variant: :product).all?(&:digital?) end end |
#digital_line_items ⇒ Array<Spree::LineItem>
Returns all line items with digital assets
40 41 42 |
# File 'app/models/spree/order/digital.rb', line 40 def digital_line_items line_items.joins(:variant).with_digital_assets.distinct end |
#digital_links ⇒ Array<Spree::DigitalLink>
Returns all digital links for the order
47 48 49 |
# File 'app/models/spree/order/digital.rb', line 47 def digital_links digital_line_items.map(&:digital_links).flatten end |
#some_digital? ⇒ Boolean
Returns true if any order line item is digital
18 19 20 21 22 23 24 |
# File 'app/models/spree/order/digital.rb', line 18 def some_digital? if item_count.zero? || line_items.empty? false else line_items.includes(variant: :product).any?(&:digital?) end end |
#with_digital_assets? ⇒ Boolean
Returns true if any order line item has digital assets
29 30 31 32 33 34 35 |
# File 'app/models/spree/order/digital.rb', line 29 def with_digital_assets? if item_count.zero? || line_items.empty? false else line_items.includes(:variant).any?(&:with_digital_assets?) end end |