Class: RuboCop::Cop::Gusto::PluckOnSelect
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Gusto::PluckOnSelect
- Defined in:
- lib/rubocop/cop/gusto/pluck_on_select.rb
Overview
Do not use ‘.pluck` on `.select`.
‘.select` returns an ActiveRecord relation with only the selected columns marked for retrieval. `.pluck` returns an array of column values. When chained, `.pluck` is unaware of any directive passed to `.select` (e.g. column aliases or a DISTINCT clause), which can cause unexpected behavior.
Constant Summary collapse
- RESTRICT_ON_SEND =
%i(pluck).freeze
- MSG =
"Do not use `.pluck` on `.select`."
Instance Method Summary collapse
- #on_send(node) ⇒ Object (also: #on_csend)
Instance Method Details
#on_send(node) ⇒ Object Also known as: on_csend
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rubocop/cop/gusto/pluck_on_select.rb', line 41 def on_send(node) return unless node.receiver receiver_node = node.receiver while receiver_node if receiver_node.call_type? && receiver_node.method?(:select) add_offense(node) break end receiver_node = receiver_node.receiver end end |