Rails enums with same values


Rails 5 introduced a way to define multiple Enums with same values using: _prefix and _suffix.

In our ActiveRecord model we can define and use enums like this:

class Organization < ActiveRecord::Base
  enum current_plan: [:plan_one, :plan_two, :plan_three]
end

organization.plan_one!
organization.plan_one? # => true
organization.plan_two? # => false
organization.current_plan # => 'plan_one'

You can use the _prefix or _suffix options when you need to define multiple enums with same values. If the passed value is true, the methods are prefixed/suffixed with the name of the enum. It is also possible to supply a custom value:

class Organization < ActiveRecord::Base
  enum current_plan: [:plan_one, :plan_two, :plan_three], _suffix: true
  enum upcoming_plan: [:plan_zero, :plan_one, :plan_two, :plan_three], _prefix: :upcoming
end

organization.plan_one_current_plan!
organization.plan_one_current_plan? # => true

organization.upcoming_plan_two!
organization.upcoming_plan_two? # => true
Written on August 22, 2020