active_validation 4.0.5 → 4.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 +4 -4
- data/README.md +35 -0
- data/config/locales/en.yml +4 -0
- data/lib/active_validation/validators/time_zone_validator.rb +24 -0
- data/lib/active_validation/version.rb +1 -1
- data/lib/active_validation.rb +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7d8a4c60d44f74ace63f5416af7c92ceca82844
|
4
|
+
data.tar.gz: de8ff337595b71667495cd067072ccaa0ca9d0ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f10b556bdadc2f3df830a85e5e0cd7aca7939ff0b32575f314fc22c6ffc049fae0b0317e159735f2b9ad3f4b341a4f7fcb588d84ece4de468598b5a4b52b7e76
|
7
|
+
data.tar.gz: 446a216633b65e6ce31a49d124d9a1b5b59e801263cb3d60eb53002edf9ab97d440934a87ac3fcd2930fb94330996d3c53ea61d6cb6fb8f328a75e7a2ef59034
|
data/README.md
CHANGED
@@ -50,6 +50,7 @@ Or install it yourself as:
|
|
50
50
|
* [SEDOL](#sedolvalidator)
|
51
51
|
* [Slug](#slugvalidator)
|
52
52
|
* [SSN](#ssnvalidator)
|
53
|
+
* [Time Zone](#timezonevalidator)
|
53
54
|
* [Tracking Number](#trackingnumbervalidator)
|
54
55
|
* [Type](#typevalidator)
|
55
56
|
* [URL](#urlvalidator)
|
@@ -918,6 +919,40 @@ describe User do
|
|
918
919
|
end
|
919
920
|
```
|
920
921
|
|
922
|
+
## TimeZoneValidator
|
923
|
+
|
924
|
+
**Ex:** 'America/New_York' or 'London'
|
925
|
+
|
926
|
+
**Rules:**
|
927
|
+
* Any valid time zone
|
928
|
+
|
929
|
+
With an ActiveRecord model:
|
930
|
+
|
931
|
+
```ruby
|
932
|
+
class User < ActiveRecord::Base
|
933
|
+
attr_accessor :time_zone, :name
|
934
|
+
validates :time_zone, time_zone: true
|
935
|
+
```
|
936
|
+
|
937
|
+
Or any ruby class:
|
938
|
+
|
939
|
+
```ruby
|
940
|
+
class User
|
941
|
+
include ActiveModel::Validations
|
942
|
+
attr_accessor :time_zone, :name
|
943
|
+
validates :time_zone, time_zone: true
|
944
|
+
end
|
945
|
+
```
|
946
|
+
|
947
|
+
RSpec matcher is also available for your convenience:
|
948
|
+
|
949
|
+
```ruby
|
950
|
+
describe User do
|
951
|
+
it { should ensure_valid_type_format_of(:time_zone) }
|
952
|
+
it { should_not ensure_valid_type_format_of(:name) }
|
953
|
+
end
|
954
|
+
```
|
955
|
+
|
921
956
|
## TrackingNumberValidator
|
922
957
|
|
923
958
|
**Ex:** 1Z8V92A70367203024
|
data/config/locales/en.yml
CHANGED
@@ -27,6 +27,7 @@ en:
|
|
27
27
|
sedol: 'is not in valid SEDOL format'
|
28
28
|
slug: 'is not in valid slug format'
|
29
29
|
ssn: 'is not in valid social security number format'
|
30
|
+
time_zone: 'is not a valid time zone'
|
30
31
|
tracking_number: 'is not in valid tracking number format'
|
31
32
|
type: 'is not a valid type'
|
32
33
|
url: 'is not in valid URL format'
|
@@ -99,6 +100,9 @@ en:
|
|
99
100
|
ensure_valid_ssn_format_of:
|
100
101
|
failure_message_for_should: '%{model} should ensure valid SSN format of attribute %{attr}'
|
101
102
|
failure_message_for_should_not: '%{model} should not ensure valid SSN format of attribute %{attr}'
|
103
|
+
ensure_valid_time_zone_format_of:
|
104
|
+
failure_message_for_should: '%{model} should ensure valid time zone of attribute %{attr}'
|
105
|
+
failure_message_for_should_not: '%{model} should not ensure valid time zone of attribute %{attr}'
|
102
106
|
ensure_valid_tracking_number_format_of:
|
103
107
|
failure_message_for_should: '%{model} should ensure valid tracking number format of attribute %{attr}'
|
104
108
|
failure_message_for_should_not: '%{model} should not ensure valid tracking number format of attribute %{attr}'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class TimeZoneValidator < ActiveModel::EachValidator
|
2
|
+
|
3
|
+
def validate_each(record, attribute, value)
|
4
|
+
return if valid?(value)
|
5
|
+
record.errors[attribute] <<
|
6
|
+
(options[:message] || I18n.t('active_validation.errors.messages.time_zone'))
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def valid_time_zone?(value)
|
12
|
+
ActiveSupport::TimeZone[value].present?
|
13
|
+
end
|
14
|
+
|
15
|
+
def valid_length?(value)
|
16
|
+
value.present?
|
17
|
+
end
|
18
|
+
|
19
|
+
def valid?(value)
|
20
|
+
valid_length?(value) &&
|
21
|
+
valid_time_zone?(value)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/active_validation.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'active_model'
|
2
2
|
require 'active_support'
|
3
|
+
require 'active_support/core_ext/time/zones'
|
3
4
|
require 'active_validation/version'
|
4
5
|
|
5
6
|
ACTIVE_VALIDATION_VALIDATORS ||= %w(
|
6
7
|
alpha alpha_numeric base64 boolean coordinate credit_card currency cusip email equality hex imei
|
7
|
-
ip isbn isin mac_address name password phone sedol slug ssn tracking_number type url
|
8
|
+
ip isbn isin mac_address name password phone sedol slug ssn time_zone tracking_number type url
|
9
|
+
username uuid
|
8
10
|
).freeze
|
9
11
|
|
10
12
|
ACTIVE_VALIDATION_VALIDATORS.each do |file_name|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_validation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- lib/active_validation/validators/sedol_validator.rb
|
201
201
|
- lib/active_validation/validators/slug_validator.rb
|
202
202
|
- lib/active_validation/validators/ssn_validator.rb
|
203
|
+
- lib/active_validation/validators/time_zone_validator.rb
|
203
204
|
- lib/active_validation/validators/tracking_number_validator.rb
|
204
205
|
- lib/active_validation/validators/type_validator.rb
|
205
206
|
- lib/active_validation/validators/url_validator.rb
|