Using Callbacks to Set Default Enum Values

While Rails allows setting a default value in the migration, you might want to dynamically assign an enum based on other conditions before saving a record.

Example: Setting a Default Status in before_save

class Order < ApplicationRecord
  enum :status, { pending: 0, confirmed: 1, shipped: 2, delivered: 3 }

  before_save :set_default_status

  private

  def set_default_status
    self.status ||= :pending
  end
end

Now, if no status is provided when creating an order, it will automatically be set to pending before saving.