Module: Stall::Models::ProductList::ClassMethods

Defined in:
app/models/stall/models/product_list.rb

Instance Method Summary collapse

Instance Method Details

#aborted(options = {}) ⇒ Object

The .aborted and .finalized scopes cannot be declared as actual rails scopes since subclasses that override the .wizard method wouldn’t be taken into account, scopes being executed in the context of the declaring class



138
139
140
141
# File 'app/models/stall/models/product_list.rb', line 138

def aborted(options = {})
  where.not(state: wizard.steps.last)
    .older_than(options.fetch(:before, 1.day.ago))
end

#finalizedObject



143
144
145
# File 'app/models/stall/models/product_list.rb', line 143

def finalized
  where(state: wizard.steps.last)
end

#find_by_reference(reference) ⇒ Object



129
130
131
# File 'app/models/stall/models/product_list.rb', line 129

def find_by_reference(reference)
  where("data->>'reference' = ?", reference).first
end

#wizardObject



147
148
149
150
151
152
153
154
155
156
157
# File 'app/models/stall/models/product_list.rb', line 147

def wizard
  wizard_name = Stall.config.default_checkout_wizard

  if (wizard = Stall::Utils.try_load_constant(wizard_name))
    wizard
  else
    raise Stall::Checkout::WizardNotFoundError.new,
      "The checkout wizard #{ wizard_name } was not found. You must generate it " +
      "with `rails g stall:wizard #{ wizard_name.underscore.gsub('_checkout_wizard', '') }`"
  end
end