Class: Spree::Checkout::DefaultRequirements
- Inherits:
-
Object
- Object
- Spree::Checkout::DefaultRequirements
- Defined in:
- app/models/spree/checkout/default_requirements.rb
Overview
Built-in checkout requirements that map to the standard Spree checkout flow.
Checks line items, email, shipping address, shipping method, and payment. In Spree 6 these same checks will read from the Cart model instead of the state machine — the API contract stays identical.
Instance Method Summary collapse
-
#call ⇒ Array<Hash{Symbol => String}>
Unmet default requirements as { step:, field:, message: } hashes.
-
#initialize(order) ⇒ DefaultRequirements
constructor
A new instance of DefaultRequirements.
Constructor Details
#initialize(order) ⇒ DefaultRequirements
Returns a new instance of DefaultRequirements.
12 13 14 |
# File 'app/models/spree/checkout/default_requirements.rb', line 12 def initialize(order) @order = order end |
Instance Method Details
#call ⇒ Array<Hash{Symbol => String}>
Returns unmet default requirements as { step:, field:, message: } hashes.
18 19 20 21 22 23 24 25 26 |
# File 'app/models/spree/checkout/default_requirements.rb', line 18 def call [].tap do |r| r << req('cart', 'line_items', Spree.t('checkout_requirements.line_items_required')) unless @order.line_items.any? r << req('address', 'email', Spree.t('checkout_requirements.email_required')) unless @order.email.present? r << req('address', 'ship_address', Spree.t('checkout_requirements.ship_address_required')) if @order.requires_ship_address? && @order.ship_address.blank? r << req('delivery', 'shipping_method', Spree.t('checkout_requirements.shipping_method_required')) if delivery_required? && !shipping_method_selected? r << req('payment', 'payment', Spree.t('checkout_requirements.payment_required')) if payment_required? && !payment_satisfied? end end |