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)