class RuboCop::Cop::Lint::DefineDeletionStrategy

This cop checks whether an ActiveRecord model implements the `.anonymise` preference (using the Anony gem).

@example Good

class User < ApplicationRecord
  anonymise do
    overwrite do
      email :email
      hex :given_name
    end
  end
end

@example Bad

class MyNewThing < ApplicationRecord; end

Constants

MSG

Public Instance Methods

class_name(node) click to toggle source
# File lib/anony/cops/define_deletion_strategy.rb, line 44
def class_name(node)
  node.children[0].const_name
end
model?(node) click to toggle source
# File lib/anony/cops/define_deletion_strategy.rb, line 38
def model?(node)
  return unless (superclass = node.children[1])

  superclass.const_name == model_superclass_name
end
model_superclass_name() click to toggle source
# File lib/anony/cops/define_deletion_strategy.rb, line 48
def model_superclass_name
  cop_config["ModelSuperclass"] || "ApplicationRecord"
end
on_class(node) click to toggle source
# File lib/anony/cops/define_deletion_strategy.rb, line 31
def on_class(node)
  return unless model?(node)
  return if uses_anonymise?(node)

  add_offense(node, message: sprintf(MSG, model: class_name(node)))
end