class RuboCop::Cop::Rails::SkipsModelValidations
This cop checks for the use of methods which skip validations which are listed in guides.rubyonrails.org/active_record_validations.html#skipping-validations
Methods may be ignored from this rule by configuring a `Whitelist`.
@example
# bad Article.first.decrement!(:view_count) DiscussionBoard.decrement_counter(:post_count, 5) Article.first.increment!(:view_count) DiscussionBoard.increment_counter(:post_count, 5) person.toggle :active product.touch Billing.update_all("category = 'authorized', author = 'David'") user.update_attribute(:website, 'example.com') user.update_columns(last_request_at: Time.current) Post.update_counters 5, comment_count: -1, action_count: 1 # good user.update(website: 'example.com') FileUtils.touch('file')
@example Whitelist: [“touch”]
# bad DiscussionBoard.decrement_counter(:post_count, 5) DiscussionBoard.increment_counter(:post_count, 5) person.toggle :active # good user.touch
Constants
- METHODS_WITH_ARGUMENTS
- MSG
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/skips_model_validations.rb, line 56 def on_send(node) return if whitelist.include?(node.method_name.to_s) return unless blacklist.include?(node.method_name.to_s) return if allowed_method?(node) return if good_touch?(node) add_offense(node, location: :selector) end
Also aliased as: on_csend
Private Instance Methods
allowed_method?(node)
click to toggle source
# File lib/rubocop/cop/rails/skips_model_validations.rb, line 72 def allowed_method?(node) METHODS_WITH_ARGUMENTS.include?(node.method_name.to_s) && !node.arguments? end
blacklist()
click to toggle source
# File lib/rubocop/cop/rails/skips_model_validations.rb, line 77 def blacklist cop_config['Blacklist'] || [] end
message(node)
click to toggle source
# File lib/rubocop/cop/rails/skips_model_validations.rb, line 68 def message(node) format(MSG, method: node.method_name) end
whitelist()
click to toggle source
# File lib/rubocop/cop/rails/skips_model_validations.rb, line 81 def whitelist cop_config['Whitelist'] || [] end