diff options
Diffstat (limited to 'rubocop/cop/database/multiple_databases.rb')
-rw-r--r-- | rubocop/cop/database/multiple_databases.rb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/rubocop/cop/database/multiple_databases.rb b/rubocop/cop/database/multiple_databases.rb index fb6e81f9845..f20348d9d1f 100644 --- a/rubocop/cop/database/multiple_databases.rb +++ b/rubocop/cop/database/multiple_databases.rb @@ -17,6 +17,10 @@ module RuboCop https://docs.gitlab.com/ee/development/database/transaction_guidelines.html EOF + ALLOWED_METHODS = %i[ + no_touching + ].freeze + def_node_matcher :active_record_base_method_is_used?, <<~PATTERN (send (const (const nil? :ActiveRecord) :Base) $_) PATTERN @@ -24,8 +28,17 @@ module RuboCop def on_send(node) return unless active_record_base_method_is_used?(node) + active_record_base_method = node.children[1] + return if method_is_allowed?(active_record_base_method) + add_offense(node, location: :expression, message: AR_BASE_MESSAGE) end + + private + + def method_is_allowed?(method_name) + ALLOWED_METHODS.include?(method_name.to_sym) + end end end end |