active_record_bitmask 0.0.3 → 0.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/CHANGELOG.md +21 -0
- data/Gemfile +4 -0
- data/README.md +37 -5
- data/active_record_bitmask.gemspec +8 -5
- data/gemfiles/5.0_stable.gemfile +4 -1
- data/gemfiles/5.1_stable.gemfile +4 -0
- data/gemfiles/5.2_stable.gemfile +4 -0
- data/gemfiles/6.0_stable.gemfile +4 -0
- data/lib/active_record_bitmask/attribute_methods/query.rb +3 -3
- data/lib/active_record_bitmask/model.rb +2 -0
- data/lib/active_record_bitmask/version.rb +1 -1
- metadata +9 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18a348e5179d4954c4dbdc8cc12c54bd0990bcfd0d9b576491f1b9ba9bb0c9f0
|
4
|
+
data.tar.gz: e7dda179cd25bef3f879510da9c89a2d29d8a22cbbf3187ef1993100e5078341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6ad230632f8ea3a0cc8999daea7cdd7dca048f86360ca4a13a8d4e928b1b726bdc4d7389322cf6aea4471a93d3959897d7245e9db5ce0859fe5fe17f767bf01
|
7
|
+
data.tar.gz: 56cfe27aac0dba743cf84198f0e37c6f9a8868510b698162a56d24cb100079ccc7d9eb8166cd217ab52b2fd33a44bd4dbaf305bb9eb3897a4d1ad2f4849f4851
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
## 0.0.4
|
2
|
+
|
3
|
+
* Fixes security alert #9
|
4
|
+
|
5
|
+
* Query methods supports string arguments #12
|
6
|
+
|
7
|
+
## 0.0.3
|
8
|
+
|
9
|
+
* Enumerize ActiveRecordBitmask::Map #4
|
10
|
+
|
11
|
+
* Support old rails #5
|
12
|
+
|
13
|
+
* Run RuboCop on CI. #6
|
14
|
+
|
15
|
+
## 0.0.2
|
16
|
+
|
17
|
+
* Support blank values for checkbox #3
|
18
|
+
|
19
|
+
## 0.0.1
|
20
|
+
|
21
|
+
* first release.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -24,6 +24,8 @@ Simply declare an existing integer column as a bitmask.
|
|
24
24
|
|
25
25
|
```ruby
|
26
26
|
class Post < ApplicationRecord
|
27
|
+
# bitmask attribute is integer column.
|
28
|
+
# `t.integer :roles, null: false, default: 0`
|
27
29
|
bitmask(roles: [:administrator, :provider, :guest])
|
28
30
|
end
|
29
31
|
```
|
@@ -55,15 +57,45 @@ map.values #=> [1, 2, 4]
|
|
55
57
|
|
56
58
|
### Scopes
|
57
59
|
|
58
|
-
|
60
|
+
Named scopes are defined when you call `.bitmask(attribute)`.
|
59
61
|
|
60
|
-
#### `
|
62
|
+
#### `.with_attribute`
|
61
63
|
|
62
|
-
|
64
|
+
```ruby
|
65
|
+
# all users with roles
|
66
|
+
User.with_roles
|
67
|
+
|
68
|
+
# all administrators
|
69
|
+
User.with_roles(:administrator)
|
70
|
+
|
71
|
+
# all users who are both administrator and partner
|
72
|
+
User.with_roles(:administrator, :partner)
|
73
|
+
```
|
74
|
+
|
75
|
+
#### `.with_any_attribute`
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
# all users who are administrator or partner
|
79
|
+
User.with_any_roles(:administrator, :partner)
|
80
|
+
```
|
63
81
|
|
64
|
-
#### `
|
82
|
+
#### `.without_attribute`, `.no_attribute`
|
65
83
|
|
66
|
-
|
84
|
+
```ruby
|
85
|
+
# all users without role
|
86
|
+
User.without_roles
|
87
|
+
User.no_roles
|
88
|
+
|
89
|
+
# all users who are not administrator
|
90
|
+
User.without_roles(:administrator)
|
91
|
+
```
|
92
|
+
|
93
|
+
#### `.with_exact_attribute`
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
# all users who are both administrator and partner and nothing else
|
97
|
+
User.with_exact_roles(:administrator, :partner)
|
98
|
+
```
|
67
99
|
|
68
100
|
## Development
|
69
101
|
|
@@ -14,14 +14,17 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.summary = 'Simple bitmask attribute support for ActiveRecord'
|
15
15
|
spec.homepage = 'https://github.com/alpaca-tc/active_record_bitmask'
|
16
16
|
|
17
|
-
spec.
|
17
|
+
spec.metadata = {
|
18
|
+
'homepage_uri' => 'https://github.com/alpaca-tc/active_record_bitmask',
|
19
|
+
'changelog_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/blob/master/CHANGELOG.md',
|
20
|
+
'source_code_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/',
|
21
|
+
'bug_tracker_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/issues'
|
22
|
+
}
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
25
|
f.match(%r{^(test|spec|features)/})
|
19
26
|
end
|
20
27
|
spec.require_paths = ['lib']
|
21
28
|
|
22
29
|
spec.add_dependency 'activerecord', '>= 5.0'
|
23
|
-
spec.add_development_dependency 'appraisal'
|
24
|
-
spec.add_development_dependency 'rake'
|
25
|
-
spec.add_development_dependency 'rspec'
|
26
|
-
spec.add_development_dependency 'sqlite3'
|
27
30
|
end
|
data/gemfiles/5.0_stable.gemfile
CHANGED
data/gemfiles/5.1_stable.gemfile
CHANGED
data/gemfiles/5.2_stable.gemfile
CHANGED
data/gemfiles/6.0_stable.gemfile
CHANGED
@@ -13,10 +13,10 @@ module ActiveRecordBitmask
|
|
13
13
|
if bitmask_attribute?(attribute_name) && values.present?
|
14
14
|
# assert bitmask values
|
15
15
|
map = self.class.bitmask_for(attribute_name)
|
16
|
-
map.attributes_to_bitmask(values)
|
16
|
+
expected_value = map.attributes_to_bitmask(values)
|
17
|
+
current_value = map.attributes_to_bitmask(attribute(attribute_name))
|
17
18
|
|
18
|
-
current_value
|
19
|
-
values.all? { |value| current_value.include?(value) }
|
19
|
+
(current_value & expected_value) == expected_value
|
20
20
|
else
|
21
21
|
super
|
22
22
|
end
|
@@ -56,6 +56,7 @@ module ActiveRecordBitmask
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
59
60
|
def define_bitmask_scopes(attribute)
|
60
61
|
blank = [0, nil].freeze
|
61
62
|
|
@@ -112,6 +113,7 @@ module ActiveRecordBitmask
|
|
112
113
|
where(attribute => blank)
|
113
114
|
}
|
114
115
|
end
|
116
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
115
117
|
end
|
116
118
|
end
|
117
119
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_bitmask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alpaca-tc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -24,62 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '5.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: appraisal
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sqlite3
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
27
|
description:
|
84
28
|
email:
|
85
29
|
- alpaca-tc@alpaca.tc
|
@@ -92,6 +36,7 @@ files:
|
|
92
36
|
- ".rubocop.yml"
|
93
37
|
- ".travis.yml"
|
94
38
|
- Appraisals
|
39
|
+
- CHANGELOG.md
|
95
40
|
- Gemfile
|
96
41
|
- README.md
|
97
42
|
- Rakefile
|
@@ -110,7 +55,11 @@ files:
|
|
110
55
|
homepage: https://github.com/alpaca-tc/active_record_bitmask
|
111
56
|
licenses:
|
112
57
|
- MIT
|
113
|
-
metadata:
|
58
|
+
metadata:
|
59
|
+
homepage_uri: https://github.com/alpaca-tc/active_record_bitmask
|
60
|
+
changelog_uri: https://github.com/alpaca-tc/active_record_bitmask/blob/master/CHANGELOG.md
|
61
|
+
source_code_uri: https://github.com/alpaca-tc/active_record_bitmask/
|
62
|
+
bug_tracker_uri: https://github.com/alpaca-tc/active_record_bitmask/issues
|
114
63
|
post_install_message:
|
115
64
|
rdoc_options: []
|
116
65
|
require_paths:
|
@@ -126,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
75
|
- !ruby/object:Gem::Version
|
127
76
|
version: '0'
|
128
77
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
78
|
+
rubygems_version: 3.1.2
|
130
79
|
signing_key:
|
131
80
|
specification_version: 4
|
132
81
|
summary: Simple bitmask attribute support for ActiveRecord
|