generated_schema_validations 0.5.5 → 0.6.1

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: 5132d3be501617c0096cedc576b6d9167643b90c7fcca7023fb21117e78ecc42
4
- data.tar.gz: '095f22b4ff3e06758bf03a1c271cf27d3c504370bafc41c5f47710ac9ba626c3'
3
+ metadata.gz: ec2ac3a0961cac39ac98ad2b31f7c81d9858f50c0170c2f0ec49cf71df766806
4
+ data.tar.gz: 117604c47ecae3fabd1c7199ea92e6b076d78b2131313e7998176e4d4d7bcd0b
5
5
  SHA512:
6
- metadata.gz: a227d2c716e5b9c05cd6349305b1dbaed35f567bfc72ee35d0ba0490e112016a4e4392f0e84792ab733b86b17e61385b271408cdd2af4808465ebc2b4110c40a
7
- data.tar.gz: 4f329cd8c928056756df0dba6048e94c34b0de3a310dd8abc9d2f91cda1b11351837af4b1f3cb158c5e0ba459211736a50e7e77e4c9925b17fff8cf4a14a974d
6
+ metadata.gz: 716aa6fed3746fb60b25ec359eccfe282814ee86d3207e4bbac2001099a1f54bf61b552622e91c88046abb275b4b9c4495360e9e950c914fb55e7141625ef475
7
+ data.tar.gz: e4669b5032d78f2b3583cee3895c99c61cdb020459853bd281e9e9f6f82d6dc7395eb8a24a6de67850545a70403dc500ccfcdc691f5a5479d8d81d16f40756d6
data/README.md CHANGED
@@ -105,6 +105,22 @@ You can watch changes on `schema_validations.rb` to understand the generated val
105
105
 
106
106
  ## Changelog
107
107
 
108
+ ### 0.6.1
109
+
110
+ * adds support for Rails 8.1 (integer range validations no longer use the private `ActiveRecord::Type::Integer#range`, which was removed in Rails 8.1)
111
+
112
+ ### 0.6.0
113
+
114
+ * add a relaxed mode for model validations in migrations
115
+
116
+ ```ruby
117
+ create_table :new_model do |t|
118
+ t.timestamps null: false
119
+ end
120
+ SchemaValidations.relaxed!
121
+ NewModel.create!
122
+ ```
123
+
108
124
  ### 0.5.5
109
125
 
110
126
  * ignore geography fields
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'generated_schema_validations'
5
- spec.version = '0.5.5'
5
+ spec.version = '0.6.1'
6
6
  spec.authors = ['Georg Limbach']
7
7
  spec.email = ['georg.limbach@lichtbit.com']
8
8
 
@@ -83,13 +83,10 @@ class GeneratedSchemaValidations::Table
83
83
 
84
84
  return if column_options[:array]
85
85
 
86
- integer_range = ::ActiveRecord::Type::Integer.new.send(:range)
87
- options = { allow_nil: true, only_integer: true, greater_than_or_equal_to: integer_range.begin }
88
- if integer_range.exclude_end?
89
- options[:less_than] = integer_range.end
90
- else
91
- options[:less_than_or_equal_to] = integer_range.end
92
- end
86
+ # Same bounds as ActiveModel::Type::Integer (min...max), computed here because
87
+ # Rails 8.1 removed the private #range method this used to call.
88
+ max_value = 1 << ((::ActiveRecord::Type::Integer::DEFAULT_LIMIT * 8) - 1)
89
+ options = { allow_nil: true, only_integer: true, greater_than_or_equal_to: -max_value, less_than: max_value }
93
90
 
94
91
  validates_without_enum name, :numericality, options
95
92
  end
@@ -9,14 +9,26 @@
9
9
  module SchemaValidations
10
10
  extend ActiveSupport::Concern
11
11
 
12
+ mattr_accessor :relaxed, default: false
13
+
14
+ def self.relaxed!
15
+ self.relaxed = true
16
+ end
17
+
18
+ def self.relaxed?
19
+ relaxed
20
+ end
21
+
12
22
  included do
13
23
  class_attribute :schema_validations_excluded_columns, default: %i[id created_at updated_at type]
14
24
  class_attribute :schema_validations_called, default: false
15
25
 
16
26
  if defined?(Rails::Railtie) && (Rails.env.development? || Rails.env.test?)
17
27
  TracePoint.trace(:end) do |t|
18
- if t.self.respond_to?(:schema_validations_called) && t.self < ApplicationRecord &&
19
- !t.self.schema_validations_called
28
+ if t.self.respond_to?(:schema_validations_called) &&
29
+ t.self < ApplicationRecord &&
30
+ !t.self.schema_validations_called &&
31
+ !SchemaValidations.relaxed?
20
32
  raise "#{t.self}: schema_validations or skip_schema_validations missing"
21
33
  end
22
34
  end
@@ -27,7 +39,12 @@ module SchemaValidations
27
39
  def schema_validations(exclude: [], schema_table_name: table_name)
28
40
  self.schema_validations_called = true
29
41
  self.schema_validations_excluded_columns += exclude.map(&:to_sym)
30
- send("dbv_#{schema_table_name}_validations", enums: defined_enums.keys.map(&:to_sym))
42
+
43
+ if SchemaValidations.relaxed?
44
+ try("dbv_#{schema_table_name}_validations", enums: defined_enums.keys.map(&:to_sym))
45
+ else
46
+ send("dbv_#{schema_table_name}_validations", enums: defined_enums.keys.map(&:to_sym))
47
+ end
31
48
  end
32
49
 
33
50
  def skip_schema_validations
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generated_schema_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Limbach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-15 00:00:00.000000000 Z
11
+ date: 2026-10-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: After each migration it generates a file with some validations. Each
14
14
  active record should include this file and can uns generated validations.
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  requirements: []
58
- rubygems_version: 3.3.26
58
+ rubygems_version: 3.4.20
59
59
  signing_key:
60
60
  specification_version: 4
61
61
  summary: Generate rails validations from schema.rb file