active_record_bitmask 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83cc7c7817104269769c84be2190c59c2fe2d4501d60844aef239913a1ce1924
4
- data.tar.gz: 2e373579a128366eba6ee1403743f9cf6954720b66bebe10982817e7306e78e3
3
+ metadata.gz: 18a348e5179d4954c4dbdc8cc12c54bd0990bcfd0d9b576491f1b9ba9bb0c9f0
4
+ data.tar.gz: e7dda179cd25bef3f879510da9c89a2d29d8a22cbbf3187ef1993100e5078341
5
5
  SHA512:
6
- metadata.gz: 8f3bae3a299ab90f8f709b59f44aa1befdc7b06e949043fec24f74c2923cb5d93b49ed5f6f517c68ef15c31272843f7e9f6f78cb841ddfcfbb0aed7f0f27a401
7
- data.tar.gz: 63ff0a8977e527a7be95a6e89e37d6ca09e3b19075dd80f89b39b86c5eeabcdab9afa9e75995bdc74f0523069e27f4f2c8d037a282f0034f489980eeb23767ac
6
+ metadata.gz: c6ad230632f8ea3a0cc8999daea7cdd7dca048f86360ca4a13a8d4e928b1b726bdc4d7389322cf6aea4471a93d3959897d7245e9db5ce0859fe5fe17f767bf01
7
+ data.tar.gz: 56cfe27aac0dba743cf84198f0e37c6f9a8868510b698162a56d24cb100079ccc7d9eb8166cd217ab52b2fd33a44bd4dbaf305bb9eb3897a4d1ad2f4849f4851
@@ -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
@@ -4,3 +4,7 @@ gemspec
4
4
 
5
5
  gem 'pry'
6
6
  gem 'rubocop'
7
+ gem 'appraisal'
8
+ gem 'rake'
9
+ gem 'rspec'
10
+ gem 'sqlite3'
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
- #### `with_roles`
60
+ Named scopes are defined when you call `.bitmask(attribute)`.
59
61
 
60
- #### `with_any_roles`
62
+ #### `.with_attribute`
61
63
 
62
- #### `without_roles`
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
- #### `with_exact_roles`
82
+ #### `.without_attribute`, `.no_attribute`
65
83
 
66
- #### `no_roles`
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.files = `git ls-files -z`.split("\x0").reject do |f|
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
@@ -4,7 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
- gem "activerecord", "~> 5.0.0"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
8
10
  gem "sqlite3", "~> 1.3.6"
11
+ gem "activerecord", "~> 5.0.0"
9
12
 
10
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 5.1.0"
8
12
 
9
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 5.2.0"
8
12
 
9
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 6.0.0"
8
12
 
9
13
  gemspec path: "../"
@@ -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 = attribute(attribute_name)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordBitmask
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  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.3
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-02-24 00:00:00.000000000 Z
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.0.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