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



124
125
126
127
# File 'app/models/stall/models/product_list.rb', line 124

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

#finalizedObject



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

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

#find_by_reference(reference) ⇒ Object



115
116
117
# File 'app/models/stall/models/product_list.rb', line 115

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

#wizardObject



133
134
135
136
137
138
139
140
141
142
143
# File 'app/models/stall/models/product_list.rb', line 133

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