rails_validations 1.0 → 1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +87 -8
- data/lib/validators/date_validator.rb +6 -1
- data/spec/spec_helper.rb +4 -2
- data/spec/validations/date_spec.rb +0 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dbffdfff5db9e79c428f0f63703e7823f48ad06
|
4
|
+
data.tar.gz: 20b3a0d8aa8c014eb0bf13d145e856dc229dcdd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 375251bca3b2ced7f504d983fdcccbe7687b9f5d9513cf6ae1b8483e831e7f813010e4d4039ee04b43e0b483bebf60af5ff9eeaa47af2b83b0848bad17c0dbfc
|
7
|
+
data.tar.gz: 49e34e36be5bf2f9818b3b4e34c54ce3c92917b24ab78a708e6ed4ada6c5f1faed0a32c19a65410ade7b0581e528dcc720d70f94b4d7625daf0851f299637d65
|
data/README.markdown
CHANGED
@@ -1,10 +1,89 @@
|
|
1
|
-
|
1
|
+
A few extra validations for rails.
|
2
2
|
|
3
|
-
|
4
|
-
- domain
|
5
|
-
- email
|
6
|
-
- iban
|
7
|
-
- phone
|
8
|
-
- postal\_code
|
3
|
+
[RubyGems.org entry](http://rubygems.org/gems/rails_validations)
|
9
4
|
|
10
|
-
|
5
|
+
date
|
6
|
+
----
|
7
|
+
Validate if a column is a valid date, and if it's before or after another date.
|
8
|
+
|
9
|
+
validates :date_column, date: true
|
10
|
+
validates :date_column, date: { after: Date.today }
|
11
|
+
validates :date_column, date: { after_or_equal_to: Date.today }
|
12
|
+
validates :date_column, date: { equal_to: Date.today }
|
13
|
+
validates :date_column, date: { before: Date.today }
|
14
|
+
validates :date_column, date: { before_or_equal_to: Date.today }
|
15
|
+
|
16
|
+
# Check if the column `enddate` is after the value of the column `begindate`
|
17
|
+
validates :begindate, date: true
|
18
|
+
validates :enddate, date: { after: :begindate }
|
19
|
+
|
20
|
+
|
21
|
+
domain
|
22
|
+
------
|
23
|
+
Validate if a string is a valid domain. This should work with [IDN](idn).
|
24
|
+
|
25
|
+
validates :domain_column, domain: true
|
26
|
+
|
27
|
+
# Set a minimum/maximum number of domain parts (aka. labels)
|
28
|
+
validates :domain_column, domain: { min_domain_parts: 2 }
|
29
|
+
validates :domain_column, domain: { max_domain_parts: 2 }
|
30
|
+
|
31
|
+
|
32
|
+
email
|
33
|
+
-----
|
34
|
+
Do a basic checks for emails. Not that this check is *not* very strict, it is
|
35
|
+
nigh-impossible to check if an email address is valid (and even if it is, it's
|
36
|
+
no guarantee if emails actually gets delivered to this address). This should
|
37
|
+
work with unicode addresses ([RFC 6531][rfc6531], [IDN][idn]).
|
38
|
+
|
39
|
+
validates :email_column, email: true
|
40
|
+
|
41
|
+
|
42
|
+
iban
|
43
|
+
----
|
44
|
+
Check if this is a valid IBAN account number. This uses the
|
45
|
+
[iban-tools][iban-tools] gem.
|
46
|
+
|
47
|
+
validates :iban_column, iban: true
|
48
|
+
|
49
|
+
|
50
|
+
phone
|
51
|
+
-----
|
52
|
+
Check if this is a valid phone number. As with the Email check, this isn't
|
53
|
+
particularly strict; conventions for writing phone numbers vary a lot.
|
54
|
+
|
55
|
+
validates :phone_column, phone: true
|
56
|
+
|
57
|
+
|
58
|
+
postal\_code
|
59
|
+
------------
|
60
|
+
Check if this is a valid postal code (or zip code for the states).
|
61
|
+
|
62
|
+
validates :postal_code_column, postal_code: { country: :nl }
|
63
|
+
|
64
|
+
# Country defaults to I18n.locale
|
65
|
+
validates :postal_code_column, postal_code: true
|
66
|
+
|
67
|
+
|
68
|
+
Currently implemented countries:
|
69
|
+
|
70
|
+
- `nl` - The Netherlands
|
71
|
+
|
72
|
+
|
73
|
+
ChangeLog
|
74
|
+
=========
|
75
|
+
|
76
|
+
version 1.1, 20141003
|
77
|
+
---------------------
|
78
|
+
- Make the date validation work if the column it points to is `nil`.
|
79
|
+
- Add documentation.
|
80
|
+
|
81
|
+
|
82
|
+
version 1.0, 20140905
|
83
|
+
---------------------
|
84
|
+
- Initial release.
|
85
|
+
|
86
|
+
|
87
|
+
[idn]: http://en.wikipedia.org/wiki/Internationalized_domain_name).
|
88
|
+
[rfc6531]: https://tools.ietf.org/html/rfc6531
|
89
|
+
[iban-tools]: https://github.com/iulianu/iban-tools
|
@@ -23,7 +23,7 @@ class DateValidator < ActiveModel::EachValidator
|
|
23
23
|
elsif raw_value.respond_to? :to_date
|
24
24
|
raw_value.to_date
|
25
25
|
else
|
26
|
-
|
26
|
+
false
|
27
27
|
end
|
28
28
|
|
29
29
|
#elsif raw_value.is_a?(Symbol) || raw_value.is_a?(String)
|
@@ -48,6 +48,11 @@ class DateValidator < ActiveModel::EachValidator
|
|
48
48
|
raise ArgumentError
|
49
49
|
end
|
50
50
|
|
51
|
+
unless option_value
|
52
|
+
record.errors.add attribute, I18n.t('rails_validations.date.invalid')
|
53
|
+
return
|
54
|
+
end
|
55
|
+
|
51
56
|
unless value.send CHECKS[option], option_value
|
52
57
|
record.errors.add attribute, I18n.t("rails_validations.date.#{option}", date: I18n.l(option_value))
|
53
58
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -45,11 +45,13 @@ module ValidationsSpecHelper
|
|
45
45
|
|
46
46
|
def v; @value end
|
47
47
|
def v= v; @value = v end
|
48
|
+
def v2; @value2 end
|
49
|
+
def v2= v; @value2 = v end
|
48
50
|
end
|
49
51
|
|
50
52
|
|
51
|
-
def model v
|
52
|
-
described_class.new v: v
|
53
|
+
def model v, v2=nil
|
54
|
+
described_class.new v: v, v2: v2
|
53
55
|
end
|
54
56
|
|
55
57
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Tournoij
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
-
description: Extra validations for rails
|
69
|
+
description: 'Extra validations for rails: date, domain, email, iban, phone, postal_code'
|
70
70
|
email:
|
71
71
|
- martin@lico.nl
|
72
72
|
executables: []
|