lib/rubocop/cop/rails/find_by_id.rb in rubocop-rails-2.22.2 vs lib/rubocop/cop/rails/find_by_id.rb in rubocop-rails-2.23.0

- old
+ new

@@ -22,44 +22,43 @@ MSG = 'Use `%<good_method>s` instead of `%<bad_method>s`.' RESTRICT_ON_SEND = %i[take! find_by_id! find_by!].freeze def_node_matcher :where_take?, <<~PATTERN - (send - $(send _ :where + (call + $(call _ :where (hash (pair (sym :id) $_))) :take!) PATTERN def_node_matcher :find_by?, <<~PATTERN { - (send _ :find_by_id! $_) - (send _ :find_by! (hash (pair (sym :id) $_))) + (call _ :find_by_id! $_) + (call _ :find_by! (hash (pair (sym :id) $_))) } PATTERN def on_send(node) where_take?(node) do |where, id_value| range = where_take_offense_range(node, where) - bad_method = build_where_take_bad_method(id_value) - register_offense(range, id_value, bad_method) + register_offense(range, id_value) end find_by?(node) do |id_value| range = find_by_offense_range(node) - bad_method = build_find_by_bad_method(node, id_value) - register_offense(range, id_value, bad_method) + register_offense(range, id_value) end end + alias on_csend on_send private - def register_offense(range, id_value, bad_method) + def register_offense(range, id_value) good_method = build_good_method(id_value) - message = format(MSG, good_method: good_method, bad_method: bad_method) + message = format(MSG, good_method: good_method, bad_method: range.source) add_offense(range, message: message) do |corrector| corrector.replace(range, good_method) end end @@ -72,22 +71,9 @@ range_between(node.loc.selector.begin_pos, node.source_range.end_pos) end def build_good_method(id_value) "find(#{id_value.source})" - end - - def build_where_take_bad_method(id_value) - "where(id: #{id_value.source}).take!" - end - - def build_find_by_bad_method(node, id_value) - case node.method_name - when :find_by_id! - "find_by_id!(#{id_value.source})" - when :find_by! - "find_by!(id: #{id_value.source})" - end end end end end end