Class: RuboCop::Cop::Rails::EnumSyntax

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector, TargetRailsVersion
Defined in:
lib/rubocop/cop/rails/enum_syntax.rb

Overview

Looks for enums written with keyword arguments syntax.

Defining enums with keyword arguments syntax is deprecated and will be removed in Rails 8.0. Positional arguments should be used instead:

Examples:

# bad
enum status: { active: 0, archived: 1 }, _prefix: true

# good
enum :status, { active: 0, archived: 1 }, prefix: true

Constant Summary collapse

MSG =
'Enum defined with keyword arguments in `%<enum>s` enum declaration. Use positional arguments instead.'
MSG_OPTIONS =
'Enum defined with deprecated options in `%<enum>s` enum declaration. Remove the `_` prefix.'
RESTRICT_ON_SEND =
%i[enum].freeze
OPTION_NAMES =
%w[prefix suffix scopes default instance_methods].freeze
UNDERSCORED_OPTION_NAMES =
OPTION_NAMES.map { |option| "_#{option}" }.freeze

Constants included from TargetRailsVersion

TargetRailsVersion::USES_REQUIRES_GEM_API

Instance Method Summary collapse

Methods included from TargetRailsVersion

minimum_target_rails_version, support_target_rails_version?

Instance Method Details

#on_send(node) ⇒ Object



40
41
42
43
# File 'lib/rubocop/cop/rails/enum_syntax.rb', line 40

def on_send(node)
  check_and_correct_keyword_args(node)
  check_enum_options(node)
end