has_constant 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/has_constant.gemspec +1 -1
- data/lib/has_constant/orm/mongoid.rb +24 -20
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.2
|
data/has_constant.gemspec
CHANGED
@@ -24,8 +24,12 @@ module HasConstant
|
|
24
24
|
|
25
25
|
class_eval do
|
26
26
|
unless fields.map(&:first).include?(singular.to_s)
|
27
|
-
|
28
|
-
|
27
|
+
if options[:as] == :array
|
28
|
+
field plural.to_sym, { :type => Array, :default => [] }.
|
29
|
+
merge(options)
|
30
|
+
else
|
31
|
+
field singular.to_sym, { :type => Integer }.merge(options)
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
index singular.to_sym, :background => true if options[:index]
|
@@ -38,37 +42,37 @@ module HasConstant
|
|
38
42
|
if options[:as] == :array
|
39
43
|
define_method("#{plural}=") do |value_set|
|
40
44
|
indexes = value_set.map do |value|
|
41
|
-
|
45
|
+
self.class.send(plural).index(value)
|
42
46
|
end
|
43
47
|
write_attribute plural, indexes
|
44
48
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
else
|
56
|
-
write_attribute singular.to_sym, val
|
49
|
+
end
|
50
|
+
|
51
|
+
define_method("#{singular}=") do |val|
|
52
|
+
if val.instance_of?(String)
|
53
|
+
if index = self.class.send(name.to_s).index(val)
|
54
|
+
write_attribute singular.to_sym, index
|
55
|
+
elsif !val.blank?
|
56
|
+
values = values.call if values.respond_to?(:call)
|
57
|
+
@has_constant_errors ||= {}
|
58
|
+
@has_constant_errors.merge!(singular.to_sym => "must be one of #{values.join(', ')}")
|
57
59
|
end
|
60
|
+
else
|
61
|
+
write_attribute singular.to_sym, val
|
58
62
|
end
|
59
63
|
end
|
60
64
|
|
61
65
|
# Add the getter method. This returns the string representation of the stored value
|
62
66
|
if options[:as] == :array
|
63
67
|
define_method(plural) do
|
64
|
-
attributes[plural].map { |val|
|
65
|
-
end
|
66
|
-
else
|
67
|
-
define_method(singular) do
|
68
|
-
eval("#{self.class}.#{name.to_s}[self.attributes[singular].to_i] if self.attributes[singular]")
|
68
|
+
attributes[plural].map { |val| self.class.send(plural)[val] }
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
define_method(singular) do
|
73
|
+
eval("#{self.class}.#{name.to_s}[self.attributes[singular].to_i] if self.attributes[singular]")
|
74
|
+
end
|
75
|
+
|
72
76
|
(class << self; self; end).instance_eval do
|
73
77
|
if options[:as] == :array
|
74
78
|
define_method "#{plural}_include".to_sym do |value|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_constant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 2
|
10
|
+
version: 0.7.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- mattbeedle
|