active_flag 0.2.0 → 1.0.0
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 +1 -1
- data/lib/active_flag/value.rb +16 -9
- data/lib/active_flag/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c38cf223e88173548cc81d49db1b87924495a7d5
|
4
|
+
data.tar.gz: d8e9a67e3000761c9f48bf4a19cb8926355de4db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 134373392f121125eb995df42b6f1d2e91b8dcc4f36c8697973e9219259256d20b54ab16b11b9e6625d43a7a1738274f5852348ddbd0be9ee8f2e89d615ee93c
|
7
|
+
data.tar.gz: 8e1b3f32ab2610a9b864e725a2ca14acb70af00f56dae55cf974c79d0e947bd07df409644a90c15bd4acf9b3834b53731ddd7b1404c3c0cc04339bdf586769b1
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Store up to 64 multiple flags ([bit array](https://en.wikipedia.org/wiki/Bit_arr
|
|
6
6
|
|
7
7
|
Perfect solution to store multiple boolean values such as preferences, notification settings, achievement status, profile options, etc. in a single column.
|
8
8
|
|
9
|
-
* **Single column to group multiple values.** You don't need to have many separate columns. You don't even need a migration when you add a new flag item to the list.
|
9
|
+
* **Single column to group multiple boolean values.** You don't need to have many separate columns. You don't even need a migration when you add a new flag item to the list.
|
10
10
|
* **Fast bitwise operations.** `WHERE languages & 3 > 0` is faster than `WHERE (english = true) OR (spanish = true) OR ...`
|
11
11
|
|
12
12
|
## Usage
|
data/lib/active_flag/value.rb
CHANGED
@@ -4,15 +4,6 @@ module ActiveFlag
|
|
4
4
|
@instance = instance
|
5
5
|
@definition = definition
|
6
6
|
@column = definition.column
|
7
|
-
|
8
|
-
@definition.keys.each do |key|
|
9
|
-
self.class.class_eval do
|
10
|
-
define_method "#{key}?" do
|
11
|
-
@instance.send(@column).include?(key)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
7
|
return self
|
17
8
|
end
|
18
9
|
|
@@ -41,5 +32,21 @@ module ActiveFlag
|
|
41
32
|
unset(key)
|
42
33
|
@instance.save!(options)
|
43
34
|
end
|
35
|
+
|
36
|
+
def set?(key)
|
37
|
+
@instance.send(@column).include?(key)
|
38
|
+
end
|
39
|
+
|
40
|
+
def unset?(key)
|
41
|
+
!set?(key)
|
42
|
+
end
|
43
|
+
|
44
|
+
def method_missing(symbol, *args, &block)
|
45
|
+
if key = symbol.to_s.chomp!('?') and @definition.keys.include?(key.to_sym)
|
46
|
+
set?(key.to_sym)
|
47
|
+
else
|
48
|
+
super
|
49
|
+
end
|
50
|
+
end
|
44
51
|
end
|
45
52
|
end
|
data/lib/active_flag/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_flag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenn Ejima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
121
|
version: '0'
|
122
122
|
requirements: []
|
123
123
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.6.10
|
125
125
|
signing_key:
|
126
126
|
specification_version: 4
|
127
127
|
summary: Bit array for ActiveRecord
|