enumerations 2.5.3 → 2.6.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/CHANGELOG.md +14 -0
- data/LICENSE +21 -0
- data/README.md +2 -1
- data/enumerations.gemspec +2 -1
- data/lib/enumerations/base.rb +30 -1
- data/lib/enumerations/reflection.rb +1 -1
- data/lib/enumerations/version.rb +1 -1
- data/test/configuration/enumerations_test.rb +10 -0
- data/test/helpers/database_helper.rb +4 -0
- data/test/helpers/test_helper.rb +11 -0
- metadata +12 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d4e5a6f8e18a9d70f988c555ea97c303467d965a1cf55a9e02f0406ddebdb85
|
4
|
+
data.tar.gz: 7cdec6ecd8e4ad23732ea23a5b41185b2ad1deb6cd44cedc96d73f2a28136925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29193d63c19d102f702ecdbe16f9c1031cdd43a6a33768c977992749b6a722c7b3aaaa1e6011786c5bd9be7d20543b37b6611d930d1a205119984a9a91d6f2cc
|
7
|
+
data.tar.gz: 20b7ed5790969bb7b9ef820cc9ff89968cfef42560e46f3dbbc83b765a48bd4cef82b1d0092496ea7709db92aa4e0749d05d8b516b2d20a591807982f8c31f51
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v2.6.0](https://github.com/infinum/enumerations/tree/v2.6.0) (2024-10-22)
|
4
|
+
[Full Changelog](https://github.com/infinum/enumerations/compare/v2.5.4...v2.6.0)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- Add ability to specify foreign key suffix on enum class.
|
9
|
+
|
10
|
+
## [v2.5.4](https://github.com/infinum/enumerations/tree/v2.5.4) (2023-01-09)
|
11
|
+
[Full Changelog](https://github.com/infinum/enumerations/compare/v2.5.3...v2.5.4)
|
12
|
+
|
13
|
+
**Implemented enhancements:**
|
14
|
+
|
15
|
+
- Add MIT license file.
|
16
|
+
|
3
17
|
## [v2.5.3](https://github.com/infinum/enumerations/tree/v2.5.3) (2022-02-02)
|
4
18
|
[Full Changelog](https://github.com/infinum/enumerations/compare/v2.5.2...v2.5.3)
|
5
19
|
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018 Infinum
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -379,11 +379,12 @@ post = Post.new
|
|
379
379
|
post.status = Status.draft # => post.status_id = 1
|
380
380
|
```
|
381
381
|
|
382
|
-
If you want to configure primary key per enumeration class, you can use `primary_key=` class method:
|
382
|
+
If you want to configure primary key or foreign key suffix per enumeration class, you can use `primary_key=` and `foreign_key_suffix=` class method:
|
383
383
|
|
384
384
|
```ruby
|
385
385
|
class Status < Enumerations::Base
|
386
386
|
self.primary_key = :id
|
387
|
+
self.foreign_key_suffix = :id
|
387
388
|
|
388
389
|
value :draft, id: 1, name: 'Draft'
|
389
390
|
value :review_pending, id: 2, name: 'Review pending'
|
data/enumerations.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.summary = 'Enumerations for ActiveRecord!'
|
8
8
|
s.description = 'Extends ActiveRecord with enumeration capabilites.'
|
9
9
|
s.homepage = 'https://github.com/infinum/enumerations'
|
10
|
+
s.license = 'MIT'
|
10
11
|
|
11
12
|
s.authors = [
|
12
13
|
'Tomislav Car', 'Nikica Jokić', 'Nikola Santić', 'Stjepan Hadjić', 'Petar Ćurković'
|
@@ -23,7 +24,7 @@ Gem::Specification.new do |s|
|
|
23
24
|
s.add_development_dependency 'pry-byebug'
|
24
25
|
s.add_development_dependency 'rake'
|
25
26
|
s.add_development_dependency 'simplecov'
|
26
|
-
s.add_development_dependency 'sqlite3'
|
27
|
+
s.add_development_dependency 'sqlite3'
|
27
28
|
|
28
29
|
s.files = `git ls-files`.split("\n")
|
29
30
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/enumerations/base.rb
CHANGED
@@ -8,11 +8,12 @@ module Enumerations
|
|
8
8
|
extend Enumerations::FinderMethods
|
9
9
|
include Enumerations::Value
|
10
10
|
|
11
|
-
class_attribute :_values, :_symbol_index, :_primary_key
|
11
|
+
class_attribute :_values, :_symbol_index, :_primary_key, :_foreign_key_suffix
|
12
12
|
|
13
13
|
self._values = {}
|
14
14
|
self._symbol_index = {}
|
15
15
|
self._primary_key = nil
|
16
|
+
self._foreign_key_suffix = nil
|
16
17
|
|
17
18
|
# Adding new value to enumeration
|
18
19
|
#
|
@@ -108,6 +109,34 @@ module Enumerations
|
|
108
109
|
_primary_key || Enumerations.configuration.primary_key
|
109
110
|
end
|
110
111
|
|
112
|
+
# Sets foreign key suffix for enumeration class.
|
113
|
+
#
|
114
|
+
# Example:
|
115
|
+
#
|
116
|
+
# class Status < Enumeration::Base
|
117
|
+
# foreign_key_suffix = :id
|
118
|
+
# end
|
119
|
+
|
120
|
+
def self.foreign_key_suffix=(suffix)
|
121
|
+
self._foreign_key_suffix = suffix && suffix.to_sym
|
122
|
+
end
|
123
|
+
|
124
|
+
# Gets foreign key suffix for enumeration class.
|
125
|
+
#
|
126
|
+
# Example:
|
127
|
+
#
|
128
|
+
# Status.foreign_key_suffix => # nil
|
129
|
+
#
|
130
|
+
# class Status < Enumeration::Base
|
131
|
+
# foreign_key_suffix = :id
|
132
|
+
# end
|
133
|
+
#
|
134
|
+
# Status.foreign_key_suffix => # :id
|
135
|
+
#
|
136
|
+
def self.foreign_key_suffix
|
137
|
+
_foreign_key_suffix || Enumerations.configuration.foreign_key_suffix
|
138
|
+
end
|
139
|
+
|
111
140
|
def self.validate_symbol_and_primary_key(symbol, attributes)
|
112
141
|
raise Enumerations::DuplicatedSymbolError if find(symbol)
|
113
142
|
|
data/lib/enumerations/version.rb
CHANGED
@@ -47,5 +47,15 @@ module Configuration
|
|
47
47
|
|
48
48
|
assert_equal query_hash, custom_enum_id: 1
|
49
49
|
end
|
50
|
+
|
51
|
+
def test_enumerations_overrides
|
52
|
+
assert_equal :id, OverridableStatus.primary_key
|
53
|
+
assert_equal :id, OverridableStatus.foreign_key_suffix
|
54
|
+
|
55
|
+
model = OverridableModel.new
|
56
|
+
model.overridable_status = OverridableStatus.draft
|
57
|
+
|
58
|
+
assert_equal 1, model.overridable_status_id
|
59
|
+
end
|
50
60
|
end
|
51
61
|
end
|
data/test/helpers/test_helper.rb
CHANGED
@@ -40,3 +40,14 @@ class User < ActiveRecord::Base
|
|
40
40
|
enumeration :role
|
41
41
|
enumeration :status
|
42
42
|
end
|
43
|
+
|
44
|
+
class OverridableStatus < Enumerations::Base
|
45
|
+
self.primary_key = :id
|
46
|
+
self.foreign_key_suffix = :id
|
47
|
+
|
48
|
+
value :draft, id: 1
|
49
|
+
end
|
50
|
+
|
51
|
+
class OverridableModel < ActiveRecord::Base
|
52
|
+
enumeration :overridable_status
|
53
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomislav Car
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
- Nikola Santić
|
10
10
|
- Stjepan Hadjić
|
11
11
|
- Petar Ćurković
|
12
|
-
autorequire:
|
12
|
+
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
date: 2017-09-08 00:00:00.000000000 Z
|
@@ -102,16 +102,16 @@ dependencies:
|
|
102
102
|
name: sqlite3
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - "
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
107
|
+
version: '0'
|
108
108
|
type: :development
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- - "
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
114
|
+
version: '0'
|
115
115
|
description: Extends ActiveRecord with enumeration capabilites.
|
116
116
|
email:
|
117
117
|
- tomislav@infinum.hr
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- ".rubocop.yml"
|
129
129
|
- CHANGELOG.md
|
130
130
|
- Gemfile
|
131
|
+
- LICENSE
|
131
132
|
- MIGRATE.md
|
132
133
|
- README.md
|
133
134
|
- Rakefile
|
@@ -156,9 +157,10 @@ files:
|
|
156
157
|
- test/translation_test.rb
|
157
158
|
- test/value_test.rb
|
158
159
|
homepage: https://github.com/infinum/enumerations
|
159
|
-
licenses:
|
160
|
+
licenses:
|
161
|
+
- MIT
|
160
162
|
metadata: {}
|
161
|
-
post_install_message:
|
163
|
+
post_install_message:
|
162
164
|
rdoc_options: []
|
163
165
|
require_paths:
|
164
166
|
- lib
|
@@ -173,8 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
175
|
- !ruby/object:Gem::Version
|
174
176
|
version: '0'
|
175
177
|
requirements: []
|
176
|
-
rubygems_version: 3.
|
177
|
-
signing_key:
|
178
|
+
rubygems_version: 3.5.15
|
179
|
+
signing_key:
|
178
180
|
specification_version: 4
|
179
181
|
summary: Enumerations for ActiveRecord!
|
180
182
|
test_files: []
|