28 lines
786 B
Ruby
28 lines
786 B
Ruby
# Existing file on main: order model with status handling
|
|
class Order < ApplicationRecord
|
|
STATUSES = %w[pending processing shipped delivered].freeze
|
|
|
|
validates :status, inclusion: { in: STATUSES }
|
|
|
|
def display_status
|
|
case status
|
|
when 'pending' then 'Awaiting processing'
|
|
when 'processing' then 'Being prepared'
|
|
when 'shipped' then 'On the way'
|
|
when 'delivered' then 'Delivered'
|
|
end
|
|
end
|
|
|
|
def can_cancel?
|
|
%w[pending processing].include?(status)
|
|
end
|
|
|
|
def notify_customer
|
|
case status
|
|
when 'pending' then OrderMailer.confirmation(self).deliver_later
|
|
when 'shipped' then OrderMailer.shipped(self).deliver_later
|
|
when 'delivered' then OrderMailer.delivered(self).deliver_later
|
|
end
|
|
end
|
|
end
|