lib/rubocop/cop/rails/read_write_attribute.rb in rubocop-rails-2.8.1 vs lib/rubocop/cop/rails/read_write_attribute.rb in rubocop-rails-2.9.0

- old
+ new

@@ -21,12 +21,15 @@ # write_attribute(:attr, val) # # # good # x = self[:attr] # self[:attr] = val - class ReadWriteAttribute < Cop + class ReadWriteAttribute < Base + extend AutoCorrector + MSG = 'Prefer `%<prefer>s` over `%<current>s`.' + RESTRICT_ON_SEND = %i[read_attribute write_attribute].freeze def_node_matcher :read_write_attribute?, <<~PATTERN { (send nil? :read_attribute _) (send nil? :write_attribute _ _) @@ -34,21 +37,19 @@ PATTERN def on_send(node) return unless read_write_attribute?(node) - add_offense(node, location: :selector) - end + add_offense(node.loc.selector, message: message(node)) do |corrector| + case node.method_name + when :read_attribute + replacement = read_attribute_replacement(node) + when :write_attribute + replacement = write_attribute_replacement(node) + end - def autocorrect(node) - case node.method_name - when :read_attribute - replacement = read_attribute_replacement(node) - when :write_attribute - replacement = write_attribute_replacement(node) + corrector.replace(node.source_range, replacement) end - - ->(corrector) { corrector.replace(node.source_range, replacement) } end private def message(node)