class RuboCop::Cop::Rails::EnumUniqueness
This cop looks for duplicate values in enum declarations.
@example
# bad enum status: { active: 0, archived: 0 } # good enum status: { active: 0, archived: 1 } # bad enum status: [:active, :archived, :active] # good enum status: [:active, :archived]
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/enum_uniqueness.rb, line 35 def on_send(node) enum?(node) do |pairs| pairs.each do |pair| enum_values(pair) do |key, args| items = args.values next unless duplicates?(items) consecutive_duplicates(items).each do |item| add_offense(item, message: format( MSG, value: item.source, enum: enum_name(key) )) end end end end end
Private Instance Methods
enum_name(key)
click to toggle source
# File lib/rubocop/cop/rails/enum_uniqueness.rb, line 55 def enum_name(key) case key.type when :sym, :str key.value else key.source end end