enum_attributes_validation 0.1.6 → 0.1.7

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
  SHA1:
3
- metadata.gz: 2fd6e05a56f58024f5393bc168563c041e1954b5
4
- data.tar.gz: 22209197eed9c900e6230fbd3f3d58235093a8f5
3
+ metadata.gz: 355752203802ce0a6de195b9263267011473a55a
4
+ data.tar.gz: da2be498bfe9b5616bb2af20b5618b09ecad7c86
5
5
  SHA512:
6
- metadata.gz: 2c16cb855fab91a5c1d0cf188f00e26c67b76bbdc4260459bc7eaf494930be6cb2982b7b155c36bab78632b1d70e9e98db34404cc77b3759f682155f484e551a
7
- data.tar.gz: 07776dece012a1663646221c2f3e844b1205c14648fc89f17dcfb62161f0af6b20bd96e068fa28ba7abb97263360d170b0c8908f0adbd4f82f838bfce48e69d8
6
+ metadata.gz: b01b8c222a306fe8dd916c6752dead5db0e3bcb34010e1a84f3c52dcff7eb8d48aee491f2e549f00d13e2441bd4148d125c568c566183bafd6b6e310ac82b5b6
7
+ data.tar.gz: 2e67752331b376feb444d4ea28b6036aba4020aa0d29b551a87b032aba186d6eb4146541e015e588e97d85ba55e22078eef1abd09937e65609b9666c9fcd215e
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- enum_attributes_validation (0.1.4)
4
+ enum_attributes_validation (0.1.7)
5
+ activerecord
6
+ activesupport
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
@@ -18,11 +20,27 @@ GEM
18
20
  minitest (~> 5.1)
19
21
  tzinfo (~> 1.1)
20
22
  arel (8.0.0)
23
+ byebug (10.0.0)
21
24
  concurrent-ruby (1.0.5)
25
+ diff-lcs (1.3)
22
26
  i18n (0.9.1)
23
27
  concurrent-ruby (~> 1.0)
24
28
  minitest (5.10.3)
25
29
  rake (10.5.0)
30
+ rspec (3.7.0)
31
+ rspec-core (~> 3.7.0)
32
+ rspec-expectations (~> 3.7.0)
33
+ rspec-mocks (~> 3.7.0)
34
+ rspec-core (3.7.1)
35
+ rspec-support (~> 3.7.0)
36
+ rspec-expectations (3.7.0)
37
+ diff-lcs (>= 1.2.0, < 2.0)
38
+ rspec-support (~> 3.7.0)
39
+ rspec-mocks (3.7.0)
40
+ diff-lcs (>= 1.2.0, < 2.0)
41
+ rspec-support (~> 3.7.0)
42
+ rspec-support (3.7.1)
43
+ sqlite3 (1.3.13)
26
44
  thread_safe (0.3.6)
27
45
  tzinfo (1.2.4)
28
46
  thread_safe (~> 0.1)
@@ -34,8 +52,12 @@ DEPENDENCIES
34
52
  activerecord
35
53
  activesupport
36
54
  bundler (~> 1.16)
55
+ byebug
37
56
  enum_attributes_validation!
57
+ i18n
38
58
  rake (~> 10.0)
59
+ rspec (~> 3.4)
60
+ sqlite3
39
61
 
40
62
  BUNDLED WITH
41
63
  1.16.0
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
+
1
2
  # EnumAttributesValidation
2
3
 
3
- Enum Attributes Validation provides validation functionality for enum attributes in models.
4
+ Enum Attributes Validation provides validation functionality for enum attributes in models. It validates **inclusion** for the specified enum keys. If values are **nil** the record is saved.
4
5
 
5
6
  ## Installation
6
7
 
@@ -20,19 +21,72 @@ Or install it yourself as:
20
21
 
21
22
  ## Usage
22
23
 
23
- Use built in method to specify which enum attributes you want to validate with inclusion.
24
+ Use built in method to specify which enum attributes you want to validate.
25
+
26
+ ```ruby
27
+ class Dog < ApplicationRecord
28
+ enum gender: { male: 0, female: 1 }
29
+ enum hair_color: { brown: 0, black: 1, blonde: 2 }
30
+
31
+ validate_enum_attributes :gender, :hair_color
32
+ end
33
+
34
+ dog = Dog.new(hair_color: :brown, gender: :female)
35
+ dog.save
36
+ # => <Dog gender: "female", hair_color: "brown" >
37
+
38
+ dog = Dog.new
39
+ dog.save
40
+ # => <Dog gender: nil, hair_color: nil >
41
+
42
+ dog = Dog.new(hair_color: nil, gender: nil)
43
+ dog.save
44
+ # => <Dog gender: nil, hair_color: nil >
45
+ ```
46
+
47
+ Or use the singular method.
24
48
 
25
49
  ```ruby
26
- class Comment < ApplicationRecord
27
- enum gender { male: 0, female: 1 }
50
+ class Dog < ApplicationRecord
51
+ enum gender: { male: 0, female: 1 }
52
+ enum hair_color: { brown: 0, black: 1, blonde: 2 }
28
53
 
29
- validate_enum_attributes :gender
54
+ validate_enum_attribute :gender
30
55
  end
31
56
  ```
32
57
 
58
+
59
+ ### Custom error messages
60
+
61
+ To show a custom error message:
62
+
63
+ ```ruby
64
+ class Dog < ApplicationRecord
65
+ enum gender: { male: 0, female: 1 }
66
+
67
+ validate_enum_attribute :gender, message: "Some string msg..."
68
+ end
69
+ ```
70
+
71
+ ### Translations
72
+
73
+ To use translations you need to update your locale file as follows
74
+
75
+ ```yml
76
+ en:
77
+ activerecord:
78
+ errors:
79
+ models:
80
+ #your_model_name#:
81
+ attributes:
82
+ #your_attribute_name#::
83
+ invalid_enum: "can't be %{value}. Valid values are: %{valid_values}"
84
+
85
+ ```
86
+
33
87
  ## Contributing
34
88
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/enum_attributes_validation.
89
+ Bug reports and pull requests are welcome on GitHub at https://github.com/CristiRazvi/enum_attributes_validation.
36
90
 
37
91
  ## License
38
92
 
@@ -1,4 +1,4 @@
1
- require "enum_attributes_validation/version"
1
+ require 'enum_attributes_validation/version'
2
2
  require 'active_support'
3
3
  require 'active_record'
4
4
 
@@ -16,22 +16,28 @@ module EnumAttributesValidation
16
16
 
17
17
  def check_enum_invalid_attributes
18
18
  if enum_invalid_attributes.present?
19
- enum_invalid_attributes.each do |key, value|
20
- errors.add(key, "invalid #{value}")
19
+ enum_invalid_attributes.each do |key, opts|
20
+ if opts[:message]
21
+ self.errors.add(:base, opts[:message])
22
+ else
23
+ self.errors.add(key, :invalid_enum, value: opts[:value], valid_values: self.class.send(key.to_s.pluralize).keys.sort.join(', '), default: "value provided (#{opts[:value]}) is invalid")
24
+ end
21
25
  end
22
26
  end
23
27
  end
24
28
  end
25
29
 
26
30
  class_methods do
27
- def validate_enum_attributes(*attributes)
31
+ def validate_enum_attributes(*attributes, **opts)
28
32
  attributes.each do |attribute|
29
33
  string_attribute = attribute.to_s
30
34
 
31
35
  define_method (string_attribute+"=").to_sym do |argument|
32
- string_argument = argument.to_s
33
- self[string_attribute] = string_argument if self.class.send(string_attribute.pluralize).keys.include?(string_argument)
34
- self.enum_invalid_attributes[attribute] = string_argument unless self.class.send(string_attribute.pluralize).keys.include?(string_argument)
36
+ unless argument.nil?
37
+ string_argument = argument.to_s
38
+ self[string_attribute] = string_argument if self.class.send(string_attribute.pluralize).keys.include?(string_argument)
39
+ self.enum_invalid_attributes[attribute] = opts.merge(value: string_argument) unless self.class.send(string_attribute.pluralize).keys.include?(string_argument)
40
+ end
35
41
  end
36
42
  end
37
43
  end
@@ -1,3 +1,3 @@
1
1
  module EnumAttributesValidation
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enum_attributes_validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cristi Stefan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-11 00:00:00.000000000 Z
11
+ date: 2018-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +66,76 @@ dependencies:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
68
  version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.4'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activerecord
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '5.1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '5.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: byebug
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: i18n
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
41
139
  description: Enum Attributes Validation provides validation functionality for enum
42
140
  attributes in models.
43
141
  email:
@@ -75,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
173
  version: '0'
76
174
  requirements: []
77
175
  rubyforge_project:
78
- rubygems_version: 2.6.8
176
+ rubygems_version: 2.6.14
79
177
  signing_key:
80
178
  specification_version: 4
81
179
  summary: Validate model enum attributes