Sha256: 60d3b6211b2797b10d8a4617db65aebb343f75680cb45ec06163c502fe1e0c4e
Contents?: true
Size: 1.23 KB
Versions: 3
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Rails # This cop is used to identify usages of `all.each` and # change them to use `all.find_each` instead. # # @example # # bad # User.all.each # # # good # User.all.find_each class FindEach < Cop MSG = 'Use `find_each` instead of `each`.'.freeze SCOPE_METHODS = %i[all where not].freeze IGNORED_METHODS = %i[order limit select].freeze def on_send(node) return unless node.receiver && node.method?(:each) return unless SCOPE_METHODS.include?(node.receiver.method_name) return if method_chain(node).any? { |m| ignored_by_find_each?(m) } add_offense(node, node.loc.selector, MSG) end def autocorrect(node) ->(corrector) { corrector.replace(node.loc.selector, 'find_each') } end private def method_chain(node) [*node.ancestors, node].map(&:method_name) end def ignored_by_find_each?(relation_method) # Active Record's #find_each ignores various extra parameters IGNORED_METHODS.include?(relation_method) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rubocop-0.49.1 | lib/rubocop/cop/rails/find_each.rb |
rubocop-0.49.0 | lib/rubocop/cop/rails/find_each.rb |
rubocop-0.48.1 | lib/rubocop/cop/rails/find_each.rb |