lib/rubocop/cop/rails/where_exists.rb in rubocop-rails-2.8.1 vs lib/rubocop/cop/rails/where_exists.rb in rubocop-rails-2.9.0
- old
+ new
@@ -34,14 +34,16 @@
# User.where(name: 'john').exists?
# User.where(['name = ?', 'john']).exists?
# User.where('name = ?', 'john').exists?
# user.posts.where(published: true).exists?
# User.where('length(name) > 10').exists?
- class WhereExists < Cop
+ class WhereExists < Base
include ConfigurableEnforcedStyle
+ extend AutoCorrector
MSG = 'Prefer `%<good_method>s` over `%<bad_method>s`.'
+ RESTRICT_ON_SEND = %i[exists?].freeze
def_node_matcher :where_exists_call?, <<~PATTERN
(send (send _ :where $...) :exists?)
PATTERN
@@ -52,22 +54,15 @@
def on_send(node)
find_offenses(node) do |args|
return unless convertable_args?(args)
range = correction_range(node)
- message = format(MSG, good_method: build_good_method(args), bad_method: range.source)
- add_offense(node, location: range, message: message)
- end
- end
+ good_method = build_good_method(args)
+ message = format(MSG, good_method: good_method, bad_method: range.source)
- def autocorrect(node)
- args = find_offenses(node)
-
- lambda do |corrector|
- corrector.replace(
- correction_range(node),
- build_good_method(args)
- )
+ add_offense(range, message: message) do |corrector|
+ corrector.replace(range, good_method)
+ end
end
end
private