enummer 1.0.2 → 1.0.4
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 +26 -0
- data/lib/enummer/enummer_type.rb +1 -1
- data/lib/enummer/extension.rb +4 -3
- data/lib/enummer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3876abd550e7a6cc2a44853daff2124bcaf7d277c9202d017b93d1f71a9b3223
|
4
|
+
data.tar.gz: 0ce455ff89be35d0aa8324570d33a5f4039ae4b3fdd7d67b317192d7bad60c21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b54ffad39435c24dcc57cf27914cdcf895be71333d2665ce553775fd39bb51e1ae6b986b25adb3dd52ff19e50319a402fa8e5ff994605fccca74ceb52fba1e63
|
7
|
+
data.tar.gz: 876a285e2de4701cef2fa2cf66e36d4d9ae560fb0951686392ad7b2fcbb7458a3ed4b9205742a55b55a3ecf4e39ed86e7816a16b07d1c9786a4cc43f4030913e
|
data/README.md
CHANGED
@@ -46,6 +46,21 @@ User.execute
|
|
46
46
|
User.not_execute
|
47
47
|
```
|
48
48
|
|
49
|
+
Additionally, a `with_<name>` scope will be generated which returns all records that match all given options. E.g.:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
user1 = User.create!(permissions: %i[read write execute])
|
53
|
+
user2 = User.create!(permissions: %i[read write])
|
54
|
+
user3 = User.create!(permissions: %i[read])
|
55
|
+
|
56
|
+
# .where(permissions: ...) will generate an `IN` query, returning all records that have *any*
|
57
|
+
# of those permissions.
|
58
|
+
User.where(permissions: %i[read write]) # => [user1, user2, user3]
|
59
|
+
|
60
|
+
# .with_permissions will return only users that have at least all of the given set of permissions
|
61
|
+
User.with_permissions(%i[read write]) # => [user1, user2]
|
62
|
+
```
|
63
|
+
|
49
64
|
### Getter methods
|
50
65
|
|
51
66
|
Simply calling the instance method for the column will return an array of options. Question mark methods are also provided.
|
@@ -87,6 +102,17 @@ lol stop
|
|
87
102
|
## Contributing
|
88
103
|
Make an issue / PR and we'll see.
|
89
104
|
|
105
|
+
### Development
|
106
|
+
|
107
|
+
```bash
|
108
|
+
$ cd enummer
|
109
|
+
$ bundle install
|
110
|
+
$ cd test/dummy
|
111
|
+
$ RAILS_ENV=test DATABASE_URL=sqlite3:dummy_test rails db:setup
|
112
|
+
$ cd ../..
|
113
|
+
$ RAILS_ENV=test DATABASE_URL=sqlite3:dummy_test bin/test
|
114
|
+
```
|
115
|
+
|
90
116
|
## Alternatives
|
91
117
|
- [flag_shih_tzu](https://github.com/pboling/flag_shih_tzu)
|
92
118
|
- Lots of booleans
|
data/lib/enummer/enummer_type.rb
CHANGED
@@ -22,7 +22,7 @@ module Enummer
|
|
22
22
|
def serialize(value)
|
23
23
|
return unless value
|
24
24
|
|
25
|
-
Array.wrap(value).sum { |value_name| @bit_pairs.fetch(value_name, 0) }
|
25
|
+
Array.wrap(value).sum { |value_name| @bit_pairs.fetch(value_name.to_sym, 0) }
|
26
26
|
end
|
27
27
|
|
28
28
|
# @param [Numeric] value Numeric representation of values
|
data/lib/enummer/extension.rb
CHANGED
@@ -38,11 +38,12 @@ module Enummer
|
|
38
38
|
|
39
39
|
define_method("#{method_name}?") { self[attribute_name].include?(name) }
|
40
40
|
define_method("#{method_name}=") do |new_value|
|
41
|
-
if new_value
|
42
|
-
self[attribute_name]
|
41
|
+
if ActiveModel::Type::Boolean.new.cast(new_value)
|
42
|
+
self[attribute_name] += [name]
|
43
43
|
else
|
44
|
-
self[attribute_name]
|
44
|
+
self[attribute_name] -= [name]
|
45
45
|
end
|
46
|
+
self[attribute_name].uniq!
|
46
47
|
end
|
47
48
|
define_method("#{method_name}!") do
|
48
49
|
update(attribute_name => self[attribute_name] + [name])
|
data/lib/enummer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enummer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Schembri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -62,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
requirements: []
|
65
|
-
rubygems_version: 3.
|
65
|
+
rubygems_version: 3.5.4
|
66
66
|
signing_key:
|
67
67
|
specification_version: 4
|
68
68
|
summary: Multi-value enums for Rails.
|