database_consistency 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2380b5d06cadf5a7b6d7f7eb68c7629e6f0da93ecd3d56f1f82799c53d85f6c4
4
- data.tar.gz: 6cd306465b2d4a4aca367e3d5c8679093668fc48777b58e767c1da88f4c9363f
3
+ metadata.gz: a6008fb2151b236c23471bb000bafc433347f3e688f93ccfab02dd1c33008f21
4
+ data.tar.gz: dbf2cf3bedae1a4e7595be03a0c85c960d3fca7a15af902aac5d2b32d4ff5a1b
5
5
  SHA512:
6
- metadata.gz: 0caf35c6c8f9f65a5fdfa215ae500890142b780ef7052a78bc1ecff31176293e034432ac3f75db01f757c8ef5260a719869d029611324d89253b7b3b608335eb
7
- data.tar.gz: 3e8265c255738814f0b5f5ff044723e7052a5d920f72ede5450add483bc6ebb68c8eea45b4470ee35c4edc04a7736409179c5dea296f28b55cc2ed082a5ace3d
6
+ metadata.gz: 6fcf39eab6149c46d1971fdbbf577494eaaf4388518ec1863672f1043f6c3fb0fe55580384752db85900f9ff94a6e6e1016d065a363c9d6e1d4dfe60014101e1
7
+ data.tar.gz: 035e0959fb1adadf7027279b52a302ade943c7c6cfd122742085154f6b867247b8bbbdc7beb9398b3ad559d0c568fadc9333d0cc7aa74c819100e7434bd8f75b
@@ -42,8 +42,13 @@ module DatabaseConsistency
42
42
  # | ----------- | ------ |
43
43
  # | persisted | ok |
44
44
  # | missing | fail |
45
- def check
46
- if model.connection.foreign_keys(model.table_name).find { |fk| fk.column == association.foreign_key.to_s }
45
+ def check # rubocop:disable Metrics/AbcSize
46
+ fk_exist = model.connection.foreign_keys(model.table_name).any? do |fk|
47
+ (Helper.extract_columns(association.foreign_key.to_s) - Array.wrap(fk.column)).empty? &&
48
+ fk.to_table == association.klass.table_name
49
+ end
50
+
51
+ if fk_exist
47
52
  report_template(:ok)
48
53
  else
49
54
  report_template(:fail, error_slug: :missing_foreign_key)
@@ -112,6 +112,10 @@ module DatabaseConsistency
112
112
  end
113
113
  end
114
114
 
115
+ def extract_columns(str)
116
+ str.scan(/(\w+)/).flatten
117
+ end
118
+
115
119
  def foreign_key_or_attribute(model, attribute)
116
120
  model._reflect_on_association(attribute)&.foreign_key || attribute
117
121
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DatabaseConsistency
4
- VERSION = '2.0.5'
4
+ VERSION = '2.0.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_consistency
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Demin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-22 00:00:00.000000000 Z
11
+ date: 2025-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord