bitmask_attributes 0.1.1 → 0.2.1
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.
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -5
- data/lib/bitmask_attributes/definition.rb +14 -1
- data/lib/bitmask_attributes/version.rb +1 -1
- data/test/bitmask_attributes_test.rb +4 -2
- metadata +27 -35
- data/VERSION +0 -1
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -65,11 +65,8 @@ A couple useful named scopes are also generated when you use
|
|
65
65
|
# => (all editors)
|
66
66
|
User.with_roles(:editor, :writer)
|
67
67
|
# => (all users who are BOTH editors and writers)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
User.with_roles(:editor) + User.with_roles(:writer)
|
72
|
-
# => (all users who are EITHER editors and writers)
|
68
|
+
User.with_any_roles(:editor, :writer)
|
69
|
+
# => (all users who are editors OR writers)
|
73
70
|
|
74
71
|
Find records without any bitmask set:
|
75
72
|
|
@@ -110,11 +110,24 @@ module BitmaskAttributes
|
|
110
110
|
}
|
111
111
|
scope :without_#{attribute}, :conditions => "#{attribute} = 0 OR #{attribute} IS NULL"
|
112
112
|
scope :no_#{attribute}, :conditions => "#{attribute} = 0 OR #{attribute} IS NULL"
|
113
|
+
|
114
|
+
scope :with_any_#{attribute},
|
115
|
+
proc { |*values|
|
116
|
+
if values.blank?
|
117
|
+
{:conditions => '#{attribute} > 0 OR #{attribute} IS NOT NULL'}
|
118
|
+
else
|
119
|
+
sets = values.map do |value|
|
120
|
+
mask = #{model}.bitmask_for_#{attribute}(value)
|
121
|
+
"#{attribute} & \#{mask} <> 0"
|
122
|
+
end
|
123
|
+
{:conditions => sets.join(' OR ')}
|
124
|
+
end
|
125
|
+
}
|
113
126
|
)
|
114
127
|
values.each do |value|
|
115
128
|
model.class_eval %(
|
116
129
|
scope :#{attribute}_for_#{value},
|
117
|
-
|
130
|
+
:conditions => ['#{attribute} & ? <> 0', #{model}.bitmask_for_#{attribute}(:#{value})]
|
118
131
|
)
|
119
132
|
end
|
120
133
|
end
|
@@ -137,6 +137,10 @@ class BitmaskAttributesTest < ActiveSupport::TestCase
|
|
137
137
|
assert_equal [@campaign1], @company.campaigns.with_medium(:print)
|
138
138
|
end
|
139
139
|
|
140
|
+
should "support retrieval by any matching value (OR)" do
|
141
|
+
assert_equal [@campaign1, @campaign3], @company.campaigns.with_any_medium(:print, :email)
|
142
|
+
end
|
143
|
+
|
140
144
|
should "support retrieval by all matching values" do
|
141
145
|
assert_equal [@campaign1], @company.campaigns.with_medium(:web, :print)
|
142
146
|
assert_equal [@campaign3], @company.campaigns.with_medium(:web, :email)
|
@@ -149,11 +153,9 @@ class BitmaskAttributesTest < ActiveSupport::TestCase
|
|
149
153
|
|
150
154
|
should "can check if at least one value is set" do
|
151
155
|
campaign = Campaign.new(:medium => [:web, :print])
|
152
|
-
|
153
156
|
assert campaign.medium?
|
154
157
|
|
155
158
|
campaign = Campaign.new
|
156
|
-
|
157
159
|
assert !campaign.medium?
|
158
160
|
end
|
159
161
|
|
metadata
CHANGED
@@ -1,38 +1,34 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitmask_attributes
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Joel Moss
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-07-05 00:00:00 +01:00
|
12
|
+
date: 2011-07-25 00:00:00.000000000 +01:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: activerecord
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2151792720 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
25
23
|
type: :runtime
|
26
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2151792720
|
27
26
|
description: Simple bitmask attribute support for ActiveRecord
|
28
27
|
email: joel@developwithstyle.com
|
29
28
|
executables: []
|
30
|
-
|
31
29
|
extensions: []
|
32
|
-
|
33
30
|
extra_rdoc_files: []
|
34
|
-
|
35
|
-
files:
|
31
|
+
files:
|
36
32
|
- .document
|
37
33
|
- .gitignore
|
38
34
|
- .rvmrc
|
@@ -41,7 +37,6 @@ files:
|
|
41
37
|
- LICENSE
|
42
38
|
- README.md
|
43
39
|
- Rakefile
|
44
|
-
- VERSION
|
45
40
|
- bitmask_attributes.gemspec
|
46
41
|
- lib/bitmask_attributes.rb
|
47
42
|
- lib/bitmask_attributes/definition.rb
|
@@ -54,32 +49,29 @@ files:
|
|
54
49
|
has_rdoc: true
|
55
50
|
homepage: http://github.com/joelmoss/bitmask_attributes
|
56
51
|
licenses: []
|
57
|
-
|
58
52
|
post_install_message:
|
59
53
|
rdoc_options: []
|
60
|
-
|
61
|
-
require_paths:
|
54
|
+
require_paths:
|
62
55
|
- lib
|
63
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
57
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
63
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version:
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
75
68
|
requirements: []
|
76
|
-
|
77
69
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.3.9.
|
70
|
+
rubygems_version: 1.3.9.2
|
79
71
|
signing_key:
|
80
72
|
specification_version: 3
|
81
73
|
summary: Simple bitmask attribute support for ActiveRecord
|
82
|
-
test_files:
|
74
|
+
test_files:
|
83
75
|
- test/bitmask_attributes_test.rb
|
84
76
|
- test/support/helpers.rb
|
85
77
|
- test/support/models.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.1.0
|