Class: RuboCop::Cop::Rails::DuplicateAssociation
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Rails::DuplicateAssociation
- Extended by:
- AutoCorrector
- Includes:
- RangeHelp, ClassSendNodeHelper
- Defined in:
- lib/rubocop/cop/rails/duplicate_association.rb
Overview
Looks for associations that have been defined multiple times in the same file.
When an association is defined multiple times on a model, Active Record overrides the previously defined association with the new one. Because of this, this cop’s autocorrection simply keeps the last of any duplicates and discards the rest.
Constant Summary collapse
- MSG =
"Association `%<name>s` is defined multiple times. Don't repeat associations."
Instance Method Summary collapse
Methods included from ClassSendNodeHelper
Instance Method Details
#on_class(class_node) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/rubocop/cop/rails/duplicate_association.rb', line 34 def on_class(class_node) offenses(class_node).each do |name, nodes| nodes.each do |node| add_offense(node, message: format(MSG, name: name)) do |corrector| next if same_line?(nodes.last, node) corrector.remove(range_by_whole_lines(node.source_range, include_final_newline: true)) end end end end |