string_enums

StringEnums is a concern that makes it easy to work with enums. Include the module, then invoke the class method string_enum with the attribute name followed by the list of valid values. This will add checks, writers, and constants for each value.

Usage

class Person < ActiveRecord::Base
  include StringEnums
  string_enum status: %w(living dead reviving zombie permanently_dead)
end
class FilesystemObject < ActiveRecord::Base
  include StringEnums
  string_enum kind: ['file', 'folder', 'symbolic link']
end

Example

A class declares string_enum status: ['pending', 'in progress', 'completed'], which adds the following…

… checks: * pending? * in_progress? * completed?

… and writers: * mark_pending * mark_in_progress * mark_completed

… and constants: * STATUS_PENDING * STATUS_IN_PROGRESS * STATUS_COMPLETED