Using Enums in API Responses (Serialization Techniques)
When exposing enums through APIs, returning raw integer values can be confusing. Instead, convert enums into human-readable JSON responses.
Method 1: Using as_json
for Enum Serialization
Override as_json
in your model:
class User < ApplicationRecord
enum :status, { active: 0, inactive: 1, banned: 2 }
def as_json(options = {})
super(options).merge(status: self.status)
end
end
Now, calling:
user.as_json
returns:
{ "id": 1, "name": "John Doe", "status": "active" }
instead of:
{ "id": 1, "name": "John Doe", "status": 0 }
Method 2: Using Rails API Serializer (ActiveModelSerializers)
If using ActiveModelSerializers, you can define a custom attribute:
class UserSerializer < ActiveModel::Serializer
attributes :id, :name, :status
def status
object.status
end
end
This ensures consistent API responses.