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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d91b4e83e18b7837784f5a39b0c9273b8e819a9b
4
- data.tar.gz: 730b10b8a4af614ad6bc4a5f7c19fb535f486f77
3
+ metadata.gz: c38cf223e88173548cc81d49db1b87924495a7d5
4
+ data.tar.gz: d8e9a67e3000761c9f48bf4a19cb8926355de4db
5
5
  SHA512:
6
- metadata.gz: 2149ba75280a6dbd098b4116e37513a6972ead377578fd2edebbb3f5d59513acc15f753c8fdd219f92dae71b5d9714685abfb5a4c8c6c15bf0c4b0190d367631
7
- data.tar.gz: 1fc01029a9115d7769ad8d99954d58e60f0590a57bf126676982a852488c625568fff6815081bd3f73ad61d84e09fc01c58aba7c44942a122bbbe8152c896c86
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module ActiveFlag
2
- VERSION = '0.2.0'
2
+ VERSION = '1.0.0'
3
3
  end
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.2.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: 2016-12-27 00:00:00.000000000 Z
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.5.2
124
+ rubygems_version: 2.6.10
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Bit array for ActiveRecord