generated_schema_validations 0.1.2 → 0.2.0
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +4 -0
- data/generated_schema_validations.gemspec +1 -1
- data/lib/generated_schema_validations/table.rb +2 -0
- data/lib/generated_schema_validations/template.rb +20 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ecc9bdd7f100b8b94562439eb5e8016a0bbe93626f3f4b0d5f34542e57c71f8
|
4
|
+
data.tar.gz: 83cc0561a14c817b2e7132550e61e2e10bb2a9ac66ad8345303746c222b179aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cc5c081c2351b6c53639a5401cb023135c08ee578d23a966583f6c59d644c3b092cdddff39d45fa617482bc431331a0ae59fc406e324fcc26c6aba2efcbea97
|
7
|
+
data.tar.gz: a77b5d69e3115c60f32d1f385678ed051bc58fa25fb2187b4871cccda34b57f9b11fb096e07449bf8bba3c9472d5328437b0af7ce06095e14008ea5220e65fd4
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -95,6 +95,10 @@ You can watch changes on `schema_validations.rb` to understand the generated val
|
|
95
95
|
|
96
96
|
## Changelog
|
97
97
|
|
98
|
+
### 0.2.0
|
99
|
+
|
100
|
+
* Add validations of date and datetime columns to be in database range
|
101
|
+
|
98
102
|
### 0.1.2
|
99
103
|
|
100
104
|
* Exclude columns in unique validations
|
@@ -76,10 +76,12 @@ class GeneratedSchemaValidations::Table
|
|
76
76
|
|
77
77
|
def datetime(name, column_options = {})
|
78
78
|
null_validation(:datetime, name, column_options)
|
79
|
+
validates name, :date_time_in_db_range
|
79
80
|
end
|
80
81
|
|
81
82
|
def date(name, column_options = {})
|
82
83
|
null_validation(:date, name, column_options)
|
84
|
+
validates name, :date_in_db_range
|
83
85
|
end
|
84
86
|
|
85
87
|
def boolean(name, column_options = {})
|
@@ -71,4 +71,24 @@ module SchemaValidations
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
74
|
+
|
75
|
+
class DateTimeInDbRangeValidator < ActiveModel::EachValidator
|
76
|
+
def validate_each(record, attr_name, value)
|
77
|
+
return if value.nil?
|
78
|
+
return unless value.is_a?(DateTime) || value.is_a?(Time)
|
79
|
+
return if value.year.between?(-4711, 294275) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
|
80
|
+
|
81
|
+
record.errors.add(attr_name, :invalid, options)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class DateInDbRangeValidator < ActiveModel::EachValidator
|
86
|
+
def validate_each(record, attr_name, value)
|
87
|
+
return if value.nil?
|
88
|
+
return unless value.is_a?(Date)
|
89
|
+
return if value.year.between?(-4711, 5874896) # see https://www.postgresql.org/docs/9.3/datatype-datetime.html
|
90
|
+
|
91
|
+
record.errors.add(attr_name, :invalid, options)
|
92
|
+
end
|
93
|
+
end
|
74
94
|
end
|
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.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Limbach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-13 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.
|