Class: RuboCop::Cop::Rails::StrongParametersExpect
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Rails::StrongParametersExpect
- Extended by:
- AutoCorrector, TargetRailsVersion
- Defined in:
- lib/rubocop/cop/rails/strong_parameters_expect.rb
Overview
Enforces the use of ‘ActionController::Parameters#expect` as a method for strong parameter handling.
Constant Summary collapse
- MSG =
'Use `%<prefer>s` instead.'
- RESTRICT_ON_SEND =
%i[require permit].freeze
Constants included from TargetRailsVersion
TargetRailsVersion::TARGET_GEM_NAME, TargetRailsVersion::USES_REQUIRES_GEM_API
Instance Method Summary collapse
-
#on_send(node) ⇒ Object
(also: #on_csend)
rubocop:disable Metrics/AbcSize, Metrics/MethodLength.
Methods included from TargetRailsVersion
minimum_target_rails_version, support_target_rails_version?
Instance Method Details
#on_send(node) ⇒ Object Also known as: on_csend
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/rubocop/cop/rails/strong_parameters_expect.rb', line 46 def on_send(node) return if part_of_ignored_node?(node) if (permit_method, require_method = params_require_permit(node)) range = offense_range(require_method, node) prefer = expect_method(require_method, permit_method) replace_argument = true elsif (require_method, permit_method = params_permit_require(node)) range = offense_range(permit_method, node) prefer = "expect(#{permit_method.arguments.map(&:source).join(', ')})" replace_argument = false else return end add_offense(range, message: format(MSG, prefer: prefer)) do |corrector| corrector.remove(require_method.receiver.source_range.end.join(require_method.source_range.end)) corrector.replace(permit_method.loc.selector, 'expect') if replace_argument corrector.insert_before(permit_method.first_argument, "#{require_key(require_method)}[") corrector.insert_after(permit_method.last_argument, ']') end end ignore_node(node) end |