class RuboCop::Cop::Rails::Validation

This cop checks for the use of old-style attribute validation macros.

Constants

BLACKLIST
MSG
TYPES
WHITELIST

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/rails/validation.rb, line 25
def on_send(node)
  return unless !node.receiver && BLACKLIST.include?(node.method_name)

  add_offense(node, location: :selector)
end

Private Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/rails/validation.rb, line 41
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.selector, 'validates')
    correct_validate_type(corrector, node)
  end
end
correct_validate_type(corrector, node) click to toggle source
# File lib/rubocop/cop/rails/validation.rb, line 48
def correct_validate_type(corrector, node)
  options = node.arguments.find { |arg| !arg.sym_type? }
  validate_type = node.method_name.to_s.split('_')[1]

  if options
    corrector.replace(options.loc.expression,
                      "#{validate_type}: { #{options.source} }")
  else
    corrector.insert_after(node.loc.expression,
                           ", #{validate_type}: true")
  end
end
message(node) click to toggle source
# File lib/rubocop/cop/rails/validation.rb, line 33
def message(node)
  format(MSG, preferred_method(node.method_name), node.method_name)
end
preferred_method(method) click to toggle source
# File lib/rubocop/cop/rails/validation.rb, line 37
def preferred_method(method)
  WHITELIST[BLACKLIST.index(method.to_sym)]
end