power_enum 0.5.2 → 0.5.3
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/README.md +18 -17
- data/lib/active_record/acts/enumerated.rb +4 -1
- metadata +75 -105
data/README.md
CHANGED
@@ -133,7 +133,7 @@ It's easier to use the `references` method if you intend to stick to the default
|
|
133
133
|
|
134
134
|
There are two methods added to Rails migrations:
|
135
135
|
|
136
|
-
#####
|
136
|
+
##### create_enum(enum\_name, options = {}, &block)
|
137
137
|
|
138
138
|
Creates a new enum table. `enum_name` will be automatically pluralized. The following options are supported:
|
139
139
|
|
@@ -192,7 +192,7 @@ is the equivalent of
|
|
192
192
|
|
193
193
|
Notice that a unique index is automatically created on the specified name column.
|
194
194
|
|
195
|
-
#####
|
195
|
+
##### remove\_enum(enum\_name)
|
196
196
|
|
197
197
|
Drops the enum table. `enum_name` will be automatically pluralized.
|
198
198
|
|
@@ -217,11 +217,12 @@ With that, your BookingStatus class will have the following methods defined:
|
|
217
217
|
|
218
218
|
#### Class Methods
|
219
219
|
|
220
|
-
#####
|
220
|
+
##### [](arg)
|
221
221
|
|
222
222
|
`BookingStatus[arg]` performs a lookup for the BookingStatus instance for the given arg. The arg value can be a 'string' or a :symbol,
|
223
223
|
in which case the lookup will be against the BookingStatus.name field. Alternatively arg can be a Fixnum,
|
224
|
-
in which case the lookup will be against the BookingStatus.id field.
|
224
|
+
in which case the lookup will be against the BookingStatus.id field. Since version 0.5.3, it returns the arg
|
225
|
+
if arg is an instance of the enum (in this case BookingStatus) as a convenience.
|
225
226
|
|
226
227
|
The `:on_lookup_failure` option specifies the name of a *class* method to invoke when the `[]` method is unable to locate a BookingStatus record for arg.
|
227
228
|
The default is the built-in `:enforce_none` which returns nil. There are also built-ins for `:enforce_strict` (raise and exception regardless of the type for arg),
|
@@ -231,15 +232,15 @@ and `:enforce_strict_symbols` (raises an exception if the arg is a Symbol).
|
|
231
232
|
The purpose of the `:on_lookup_failure` option is that a) under some circumstances a lookup failure is a Bad Thing and action should be taken,
|
232
233
|
therefore b) a fallback action should be easily configurable.
|
233
234
|
|
234
|
-
#####
|
235
|
+
##### all
|
235
236
|
|
236
237
|
`BookingStatus.all` returns an array of all BookingStatus records that match the `:conditions` specified in `acts_as_enumerated`, in the order specified by `:order`.
|
237
238
|
|
238
|
-
#####
|
239
|
+
##### active
|
239
240
|
|
240
241
|
`BookingStatus.active` returns an array of all BookingStatus records that are marked active. See the `active?` instance method.
|
241
242
|
|
242
|
-
#####
|
243
|
+
##### inactive
|
243
244
|
|
244
245
|
`BookingStatus.inactive` returns an array of all BookingStatus records that are inactive. See the `inactive?` instance method.
|
245
246
|
|
@@ -247,7 +248,7 @@ therefore b) a fallback action should be easily configurable.
|
|
247
248
|
|
248
249
|
Each enumeration model gets the following instance methods.
|
249
250
|
|
250
|
-
#####
|
251
|
+
##### ===(arg)
|
251
252
|
|
252
253
|
Behavior depends on the type of `arg`.
|
253
254
|
|
@@ -268,7 +269,7 @@ You should note that defining an `:on_lookup_failure` method that raises an exce
|
|
268
269
|
|
269
270
|
`like?` is aliased to `===`
|
270
271
|
|
271
|
-
#####
|
272
|
+
##### in?(*list)
|
272
273
|
|
273
274
|
Returns true if any element in the list returns true for `===(arg)`, false otherwise.
|
274
275
|
|
@@ -276,21 +277,21 @@ Example:
|
|
276
277
|
|
277
278
|
BookingStatus[:foo].in? :foo, :bar, :baz #Returns true
|
278
279
|
|
279
|
-
#####
|
280
|
+
##### name
|
280
281
|
|
281
282
|
Returns the 'name' of the enum, i.e. the value in the `:name_column` attribute of the enumeration model.
|
282
283
|
|
283
|
-
#####
|
284
|
+
##### name\_sym
|
284
285
|
|
285
286
|
Returns the symbol representation of the name of the enum. `BookingStatus[:foo].name_sym` returns :foo.
|
286
287
|
|
287
|
-
#####
|
288
|
+
##### active?
|
288
289
|
|
289
290
|
Returns true if the instance is active, false otherwise. If it has an attribute 'active',
|
290
291
|
returns the attribute cast to a boolean, otherwise returns true. This method is used by the `active`
|
291
292
|
class method to select active enums.
|
292
293
|
|
293
|
-
#####
|
294
|
+
##### inactive?
|
294
295
|
|
295
296
|
Returns true if the instance is inactive, false otherwise. Default implementations returns `!active?`
|
296
297
|
This method is used by the `inactive` class method to select inactive enums.
|
@@ -336,11 +337,11 @@ attribute unless a non-nil value has already been set.
|
|
336
337
|
|
337
338
|
With that, your Booking class will have the following methods defined:
|
338
339
|
|
339
|
-
####
|
340
|
+
#### status
|
340
341
|
|
341
342
|
Returns the BookingStatus with an id that matches the value in the Booking.status_id.
|
342
343
|
|
343
|
-
####
|
344
|
+
#### status=(arg)
|
344
345
|
|
345
346
|
Sets the value for Booking.status_id using the id of the BookingStatus instance passed as an argument. As a
|
346
347
|
short-hand, you can also pass it the 'name' of a BookingStatus instance, either as a 'string' or :symbol, or pass in the id directly.
|
@@ -373,11 +374,11 @@ for all has\_enumerated fields if you happen to have more than one defined in yo
|
|
373
374
|
NOTE: A `nil` is always considered to be a valid value for `status=(arg)` since it's assumed you're trying to null out the foreign key.
|
374
375
|
The `:on_lookup_failure` will be bypassed.
|
375
376
|
|
376
|
-
####
|
377
|
+
#### has\_enumerated?(attr)
|
377
378
|
|
378
379
|
Returns true if the given attr is an enumerated attributes, false otherwise. `attr` can be a string or a symbol.
|
379
380
|
|
380
|
-
####
|
381
|
+
#### enumerated\_attributes
|
381
382
|
|
382
383
|
Returns an array of attributes which are enumerated.
|
383
384
|
|
@@ -66,7 +66,8 @@ module ActiveRecord
|
|
66
66
|
@all_inactive = all.select{ |enum| !enum.active? }.freeze
|
67
67
|
end
|
68
68
|
|
69
|
-
# Enum lookup by Symbol, String, or id.
|
69
|
+
# Enum lookup by Symbol, String, or id. Returns <tt>arg<tt> if arg is
|
70
|
+
# an enum instance.
|
70
71
|
def [](arg)
|
71
72
|
case arg
|
72
73
|
when Symbol
|
@@ -75,6 +76,8 @@ module ActiveRecord
|
|
75
76
|
return_val = lookup_name(arg) and return return_val
|
76
77
|
when Fixnum
|
77
78
|
return_val = lookup_id(arg) and return return_val
|
79
|
+
when self
|
80
|
+
return arg
|
78
81
|
when nil
|
79
82
|
nil
|
80
83
|
else
|
metadata
CHANGED
@@ -1,15 +1,10 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_enum
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 2
|
10
|
-
version: 0.5.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Trevor Squires
|
14
9
|
- Pivotal Labs
|
15
10
|
- Arthur Shagall
|
@@ -17,98 +12,82 @@ authors:
|
|
17
12
|
autorequire:
|
18
13
|
bindir: bin
|
19
14
|
cert_chain: []
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
requirement: &
|
15
|
+
date: 2012-01-17 00:00:00.000000000Z
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: rails
|
19
|
+
requirement: &26849560 !ruby/object:Gem::Requirement
|
25
20
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 0
|
21
|
+
requirements:
|
22
|
+
- - ! '>='
|
23
|
+
- !ruby/object:Gem::Version
|
34
24
|
version: 3.0.0
|
35
|
-
version_requirements: *id001
|
36
|
-
name: rails
|
37
|
-
prerelease: false
|
38
25
|
type: :runtime
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 3
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
version: "0"
|
49
|
-
version_requirements: *id002
|
50
|
-
name: jeweler
|
51
26
|
prerelease: false
|
52
|
-
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
|
27
|
+
version_requirements: *26849560
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: jeweler
|
30
|
+
requirement: &26848800 !ruby/object:Gem::Requirement
|
55
31
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
63
|
-
version_requirements: *id003
|
64
|
-
name: rspec
|
65
|
-
prerelease: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
66
36
|
type: :development
|
67
|
-
|
68
|
-
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: *26848800
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: rspec
|
41
|
+
requirement: &26848100 !ruby/object:Gem::Requirement
|
69
42
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
|
75
|
-
- 0
|
76
|
-
version: "0"
|
77
|
-
version_requirements: *id004
|
78
|
-
name: sqlite3
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
type: :development
|
79
48
|
prerelease: false
|
49
|
+
version_requirements: *26848100
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: sqlite3
|
52
|
+
requirement: &26847160 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
80
58
|
type: :development
|
81
|
-
|
82
|
-
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: *26847160
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: genspec
|
63
|
+
requirement: &26846180 !ruby/object:Gem::Requirement
|
83
64
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
hash: 21
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
- 2
|
91
|
-
- 1
|
65
|
+
requirements:
|
66
|
+
- - =
|
67
|
+
- !ruby/object:Gem::Version
|
92
68
|
version: 0.2.1
|
93
|
-
version_requirements: *id005
|
94
|
-
name: genspec
|
95
|
-
prerelease: false
|
96
69
|
type: :development
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: *26846180
|
72
|
+
description: ! 'Power Enum allows you to treat instances of your ActiveRecord models
|
73
|
+
as though they were an enumeration of values.
|
74
|
+
|
75
|
+
It allows you to cleanly solve many of the problems that the traditional Rails alternatives
|
76
|
+
handle poorly if at all.
|
77
|
+
|
78
|
+
It is particularly suitable for scenarios where your Rails application is not the
|
79
|
+
only user of the database, such as
|
102
80
|
|
81
|
+
when it''s used for analytics or reporting.
|
82
|
+
|
83
|
+
'
|
103
84
|
email: arthur.shagall@gmail.com
|
104
85
|
executables: []
|
105
|
-
|
106
86
|
extensions: []
|
107
|
-
|
108
|
-
extra_rdoc_files:
|
87
|
+
extra_rdoc_files:
|
109
88
|
- LICENSE
|
110
89
|
- README.md
|
111
|
-
files:
|
90
|
+
files:
|
112
91
|
- examples/virtual_enumerations_sample.rb
|
113
92
|
- lib/active_record/acts/enumerated.rb
|
114
93
|
- lib/active_record/aggregations/has_enumerated.rb
|
@@ -126,36 +105,27 @@ files:
|
|
126
105
|
- README.md
|
127
106
|
homepage: http://github.com/albertosaurus/enumerations_mixin
|
128
107
|
licenses: []
|
129
|
-
|
130
108
|
post_install_message:
|
131
109
|
rdoc_options: []
|
132
|
-
|
133
|
-
require_paths:
|
110
|
+
require_paths:
|
134
111
|
- lib
|
135
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
113
|
none: false
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
|
141
|
-
|
142
|
-
- 0
|
143
|
-
version: "0"
|
144
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
119
|
none: false
|
146
|
-
requirements:
|
147
|
-
- -
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
|
150
|
-
segments:
|
151
|
-
- 0
|
152
|
-
version: "0"
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
153
124
|
requirements: []
|
154
|
-
|
155
125
|
rubyforge_project:
|
156
126
|
rubygems_version: 1.8.10
|
157
127
|
signing_key:
|
158
128
|
specification_version: 3
|
159
|
-
summary: Allows you to treat instances of your ActiveRecord models as though they
|
129
|
+
summary: Allows you to treat instances of your ActiveRecord models as though they
|
130
|
+
were an enumeration of values
|
160
131
|
test_files: []
|
161
|
-
|