power_enum 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/power_enum/enumerated.rb +20 -3
- metadata +3 -3
@@ -125,10 +125,15 @@ module PowerEnum::Enumerated
|
|
125
125
|
# Returns all the enum values. Caches results after the first time this method is run.
|
126
126
|
def all
|
127
127
|
return @all if @all
|
128
|
+
@all = load_all.collect{|val| val.freeze}.freeze
|
129
|
+
end
|
130
|
+
|
131
|
+
def load_all
|
128
132
|
conditions = self.acts_enumerated_conditions
|
129
133
|
order = self.acts_enumerated_order
|
130
|
-
|
134
|
+
where(conditions).order(order)
|
131
135
|
end
|
136
|
+
private :load_all
|
132
137
|
|
133
138
|
# Returns all the active enum values. See the 'active?' instance method.
|
134
139
|
def active
|
@@ -242,6 +247,9 @@ module PowerEnum::Enumerated
|
|
242
247
|
if block_given?
|
243
248
|
begin
|
244
249
|
self.enumeration_model_updates_permitted = true
|
250
|
+
purge_enumerations_cache
|
251
|
+
@all = load_all
|
252
|
+
@enumerations_model_updating = true
|
245
253
|
case block.arity
|
246
254
|
when 0
|
247
255
|
yield
|
@@ -250,11 +258,18 @@ module PowerEnum::Enumerated
|
|
250
258
|
end
|
251
259
|
ensure
|
252
260
|
purge_enumerations_cache
|
261
|
+
@enumerations_model_updating = false
|
253
262
|
self.enumeration_model_updates_permitted = false
|
254
263
|
end
|
255
264
|
end
|
256
265
|
end
|
257
266
|
|
267
|
+
# Returns true if the enumerations model is in the middle of an
|
268
|
+
# update_enumerations_model block, false otherwise.
|
269
|
+
def enumerations_model_updating?
|
270
|
+
!!@enumerations_model_updating
|
271
|
+
end
|
272
|
+
|
258
273
|
# Returns the name of the column this enum uses as the basic underlying value.
|
259
274
|
def name_column
|
260
275
|
@name_column ||= self.acts_enumerated_name_column
|
@@ -282,10 +297,12 @@ module PowerEnum::Enumerated
|
|
282
297
|
private :all_by_name
|
283
298
|
|
284
299
|
def all_by_attribute(attr)
|
285
|
-
all.inject({}) { |memo, item|
|
300
|
+
aba = all.inject({}) { |memo, item|
|
286
301
|
memo[item.send(attr)] = item
|
287
302
|
memo
|
288
|
-
}
|
303
|
+
}
|
304
|
+
aba.freeze unless enumerations_model_updating?
|
305
|
+
aba
|
289
306
|
end
|
290
307
|
private :all_by_attribute
|
291
308
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-
|
15
|
+
date: 2012-11-17 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -145,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: '0'
|
146
146
|
segments:
|
147
147
|
- 0
|
148
|
-
hash:
|
148
|
+
hash: 2627295504409005826
|
149
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|