acts_as_enumable 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ ## v0.0.3
2
+
3
+ * converting between symbol and value. e.g. `User.value_of_role("admin")` and `User.symbol_of_role(0)`
4
+
1
5
  ## v0.0.2
2
6
 
3
7
  * use class variable instead of constant. i.e. `User.roles` instead of `User::ROLES`
@@ -78,14 +78,22 @@ module ActsAsEnumable
78
78
  end
79
79
  }
80
80
 
81
+ define_method "value_of_#{attribute}" do |symbol|
82
+ self.class.send(attribute.pluralize).index(symbol.to_s)
83
+ end
84
+
85
+ define_method "symbol_of_#{attribute}" do |value|
86
+ self.class.send(attribute.pluralize)[value]
87
+ end
88
+
81
89
  define_method attribute_name do
82
- index = send("#{attribute_name}_enum")
83
- return nil if index.nil?
84
- self.class.send(attribute.pluralize)[index]
90
+ value = send("#{attribute_name}_enum")
91
+ return nil if value.nil?
92
+ self.class.send(attribute.pluralize)[value]
85
93
  end
86
- define_method "#{attribute_name}=" do |value|
87
- value_index = self.class.send(attribute.pluralize).index(value.to_s)
88
- send("#{attribute_name}_enum=", value_index)
94
+ define_method "#{attribute_name}=" do |symbol|
95
+ value = self.send("value_of_#{attribute}", symbol)
96
+ send("#{attribute_name}_enum=", value)
89
97
  end
90
98
 
91
99
  define_method "#{attribute_name}_enum" do
@@ -1,3 +1,3 @@
1
1
  module ActsAsEnumable
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -89,4 +89,18 @@ describe ActsAsEnumable::ModelAdditions do
89
89
  user.status_enum.should == 1
90
90
  user.status.should == "inactive"
91
91
  end
92
+
93
+ it "convert value to symbol" do
94
+ user = User.new
95
+
96
+ user.value_of_role(:admin).should == 0
97
+ user.value_of_status(:inactive).should == 1
98
+ end
99
+
100
+ it "convert symbol to value" do
101
+ user = User.new
102
+
103
+ user.symbol_of_role(1).should == "staff"
104
+ user.symbol_of_status(0).should == "active"
105
+ end
92
106
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_enumable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-31 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70101454344260 !ruby/object:Gem::Requirement
16
+ requirement: &70174751015440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70101454344260
24
+ version_requirements: *70174751015440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70101454343840 !ruby/object:Gem::Requirement
27
+ requirement: &70174751015020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70101454343840
35
+ version_requirements: *70174751015020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: supermodel
38
- requirement: &70101454343420 !ruby/object:Gem::Requirement
38
+ requirement: &70174751014600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70101454343420
46
+ version_requirements: *70174751014600
47
47
  description: Enum is to choose a value from a preset list
48
48
  email:
49
49
  - peter@primitus.com