Sha256: 041234a437431d9b59947982b7759d7668c636d9f3a83d67ef0bedf0557ea15c
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
# frozen_string_literal: true require "rubocop" require_relative "../version" module RuboCop module Cop module Lint # 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 class DefineDeletionStrategy < Base MSG = "Define .anonymise for %<model>s, see https://github.com/gocardless/" \ "anony/blob/#{Anony::VERSION}/README.md for details".freeze def_node_search :uses_anonymise?, "(send nil? :anonymise)" def on_class(node) return unless model?(node) return if uses_anonymise?(node) add_offense(node, message: sprintf(MSG, model: class_name(node))) end def model?(node) superclass = node.children[1] model_superclass_name.include? superclass&.const_name end def class_name(node) node.children[0].const_name end def model_superclass_name unless cop_config["ModelSuperclass"] return ["ApplicationRecord"] end if cop_config["ModelSuperclass"].is_a?(Array) return cop_config["ModelSuperclass"] end [cop_config["ModelSuperclass"]] end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
anony-1.6.0 | lib/anony/cops/define_deletion_strategy.rb |
anony-1.5.0 | lib/anony/cops/define_deletion_strategy.rb |
anony-1.4.0 | lib/anony/cops/define_deletion_strategy.rb |