active_flag 0.2.0 → 1.0.0

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: 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