activemodel_flags 0.1.0 → 0.1.1
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/.gitignore +2 -0
- data/.travis.yml +9 -0
- data/README.md +9 -1
- data/activemodel_flags.gemspec +2 -2
- data/lib/activemodel_flags/has_flags.rb +17 -2
- data/lib/activemodel_flags/version.rb +1 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dca83b9ff5623785e8b7192d6269fcf66262c0e
|
4
|
+
data.tar.gz: dea2ba65e6d0df5b0fbc42a0f317db2eefc3ca0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e405eec9189bb6139e1f36142a1aef77b0fbfc1330976a6d40ecbacc7545868205623786878d8631bf81e3a029f3bd539e3b3652723793a913bd2213fd3b42a0
|
7
|
+
data.tar.gz: 776a5f3bccbcd70d71121cbd2bd7d1eeeb4a719434cc1a6ce62fbc41a705c132e8fda4a22bb457d2beae2783cb8f28dc7d464beb182e1af759f39f152825642e
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -12,6 +12,14 @@ The Active Model Flags gem solves this issue by allowing you to arbitrarily set
|
|
12
12
|
**Table of Contents**
|
13
13
|
* [Installation](#installation)
|
14
14
|
* [Usage](#usage)
|
15
|
+
* [Getters](#getters)
|
16
|
+
* [Setters](#setters)
|
17
|
+
* [Querying](#querying)
|
18
|
+
* [Get models that have or don't have the flag set](#get-models-that-have-or-dont-have-the-flag-set)
|
19
|
+
* [Get all available flags](#get-all-available-flags)
|
20
|
+
* [Set the flags for a group of users](#set-the-flags-for-a-group-of-users)
|
21
|
+
* [Reset a particular flag for some users](#reset-a-particular-flag-for-some-users)
|
22
|
+
* [Nuke (reset) all flags](#nuke-reset-all-flags)
|
15
23
|
* [Customization](#customization)
|
16
24
|
* [Other Things](#Other_Things)
|
17
25
|
|
@@ -101,7 +109,7 @@ end
|
|
101
109
|
# Returns query list of all users that have been sent a message
|
102
110
|
```
|
103
111
|
|
104
|
-
### Get all
|
112
|
+
### Get all available flags
|
105
113
|
If you want to now what flags are being used for **debugging purposes** then you can use
|
106
114
|
```ruby
|
107
115
|
u = User.flags_used
|
data/activemodel_flags.gemspec
CHANGED
@@ -30,10 +30,10 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.add_development_dependency "rails", ">= 4.0.0"
|
32
32
|
|
33
|
-
spec.add_development_dependency "bundler"
|
33
|
+
spec.add_development_dependency "bundler"
|
34
34
|
spec.add_development_dependency "temping", "~> 3.3.0"
|
35
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
36
36
|
spec.add_development_dependency "rspec", '~> 3.4'
|
37
|
-
spec.add_development_dependency "sqlite3"
|
37
|
+
spec.add_development_dependency "sqlite3", '~> 1.3.11'
|
38
38
|
|
39
39
|
end
|
@@ -11,10 +11,10 @@ module ActivemodelFlags
|
|
11
11
|
#
|
12
12
|
def has_flags
|
13
13
|
include LocalInstanceMethods
|
14
|
+
serialize :flags, JSON
|
14
15
|
|
15
16
|
before_create :init_flags
|
16
17
|
after_initialize :init_flags
|
17
|
-
serialize :flags, JSON
|
18
18
|
|
19
19
|
scope :that_have?, -> (key) {
|
20
20
|
where("flags LIKE '%\"#{key}\":true%'")
|
@@ -86,6 +86,8 @@ module ActivemodelFlags
|
|
86
86
|
#### setters
|
87
87
|
|
88
88
|
def has(flag)
|
89
|
+
ensure_serialized
|
90
|
+
|
89
91
|
old_flags = self.flags
|
90
92
|
|
91
93
|
self.flags[flag.to_s] = true
|
@@ -99,12 +101,19 @@ module ActivemodelFlags
|
|
99
101
|
self.save!
|
100
102
|
end
|
101
103
|
|
102
|
-
def hasnt
|
104
|
+
def hasnt(flag)
|
105
|
+
ensure_serialized
|
106
|
+
|
103
107
|
old_flags = self.flags
|
104
108
|
|
105
109
|
self.flags[flag.to_s] = false
|
106
110
|
|
107
111
|
on_flag_change(old_flags[flag.to_s], self.flags[flag.to_s]) unless old_flags == self.flags
|
112
|
+
end
|
113
|
+
alias_method :has_not, :hasnt
|
114
|
+
|
115
|
+
def hasnt!(flag)
|
116
|
+
hasnt(flag)
|
108
117
|
self.save!
|
109
118
|
end
|
110
119
|
alias_method :has_not!, :hasnt!
|
@@ -157,6 +166,12 @@ module ActivemodelFlags
|
|
157
166
|
self.flags = {} unless self.flags.present?
|
158
167
|
end
|
159
168
|
|
169
|
+
def ensure_serialized
|
170
|
+
if self.flags.is_a?(String)
|
171
|
+
self.flags = JSON.load(self.flags)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
160
175
|
end
|
161
176
|
end
|
162
177
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemodel_flags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay El-Kaake
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: temping
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: sqlite3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.3.11
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.3.11
|
97
97
|
description: |-
|
98
98
|
This gem adds the ability for models to have an unlimited number of custom flags \
|
99
99
|
that are stored within one database column cell instead of several columns.
|
@@ -104,6 +104,7 @@ extensions: []
|
|
104
104
|
extra_rdoc_files: []
|
105
105
|
files:
|
106
106
|
- ".gitignore"
|
107
|
+
- ".travis.yml"
|
107
108
|
- CODE_OF_CONDUCT.md
|
108
109
|
- Gemfile
|
109
110
|
- LICENSE.txt
|