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