mongoid-state_bits 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/mongoid/state_bits.rb +10 -3
- data/lib/mongoid/state_bits/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9c8c0251915e5fd33266fda41b684088891f42e
|
4
|
+
data.tar.gz: a43c13a209e1f802ecabfcc794d9c4998a8bb0fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf65dea9dc8da39d234287f4c2dbfbda0c32640693e9d513a12bea4832b3aeffadcf06f200a5d6d876fe9ce9c43e41bf8028f8871e35a566cdd6fec55cab49f7
|
7
|
+
data.tar.gz: 602b2c2459c01f800f83a4311cf9e5ee53a6c21ef33f087d5764680e3d9fc80a4e2eb516178919bd493666dae48b2b7074af0912e3f9bd3520553f776b447ae8
|
data/README.md
CHANGED
@@ -41,6 +41,10 @@ Now(v0.2.0) it supports default values:
|
|
41
41
|
state_bits deleted:false, commentable: true, original: true
|
42
42
|
end
|
43
43
|
|
44
|
+
v0.3.0 supports multiple selector:
|
45
|
+
|
46
|
+
Post.state(deleted: true, original: false)
|
47
|
+
|
44
48
|
## Contributing
|
45
49
|
|
46
50
|
1. Fork it ( http://github.com/Slacken/mongoid-state_bits/fork )
|
data/lib/mongoid/state_bits.rb
CHANGED
@@ -29,11 +29,18 @@ module Mongoid
|
|
29
29
|
end
|
30
30
|
# declare the field
|
31
31
|
field :state_bits, type: Integer, default: default
|
32
|
-
|
32
|
+
|
33
|
+
scope :state, ->(map) do
|
33
34
|
keys = bits.map{|k| k.to_sym}
|
34
|
-
|
35
|
-
|
35
|
+
select, filter = 0, 0
|
36
|
+
map.each_pair do |key, value|
|
37
|
+
v = 2**keys.index(key)
|
38
|
+
select += v
|
39
|
+
filter += value ? v : 0
|
40
|
+
end
|
41
|
+
where("this.state_bits & #{select} == #{filter}")
|
36
42
|
end
|
43
|
+
|
37
44
|
# define methods
|
38
45
|
bits.each_with_index do |bit, index|
|
39
46
|
define_method "#{bit}=" do |bool|
|