activemodel_flags 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 46ac7c35b1859370a64e3739384db40216cc9321
4
- data.tar.gz: 2905520aecf6cbc6164b9b50f8259b11961de6ab
3
+ metadata.gz: 7dca83b9ff5623785e8b7192d6269fcf66262c0e
4
+ data.tar.gz: dea2ba65e6d0df5b0fbc42a0f317db2eefc3ca0b
5
5
  SHA512:
6
- metadata.gz: 06edeb6d64b39ea2ea1a0deeb6c4edce6a8058d93a1f9ce0c898c7f4ba11fe821b6f3681eee3eda03c6a90daed8715e0a9502e94f42171efacdcb6d6bf1bc1f9
7
- data.tar.gz: 72ad59696fa3f852cb206f2b0dd06fbf1fabeef1e98e13ed64e16c8fa7381ffd45c211b04b2379b92dad2f5bfbc99d5a3afcbc742b51330bc6c284d5e98f4b34
6
+ metadata.gz: e405eec9189bb6139e1f36142a1aef77b0fbfc1330976a6d40ecbacc7545868205623786878d8631bf81e3a029f3bd539e3b3652723793a913bd2213fd3b42a0
7
+ data.tar.gz: 776a5f3bccbcd70d71121cbd2bd7d1eeeb4a719434cc1a6ce62fbc41a705c132e8fda4a22bb457d2beae2783cb8f28dc7d464beb182e1af759f39f152825642e
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .DS_Store
11
+ /*.gem
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.1.0"
4
+ - "2.2.3"
5
+ script: 'bundle exec rake'
6
+ script: rspec spec
7
+ notifications:
8
+ email:
9
+ on_success: never
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 avaialble flags
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
@@ -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", ">= 1.10"
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!(flag)
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
@@ -1,3 +1,3 @@
1
1
  module ActivemodelFlags
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  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.0
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-04-30 00:00:00.000000000 Z
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: '1.10'
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: '1.10'
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: '0'
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: '0'
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