acts_as_constant 1.0.0 → 1.0.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/README +35 -0
- data/lib/acts_as_constant.rb +4 -1
- metadata +2 -2
data/README
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
This dynamic method will create a set of constants for the class/model from the table it’s associated with. The model class must have a table with two columns ( name = “constant name”, id = “constant id”).
|
2
|
+
|
3
|
+
|
4
|
+
These constants can be accessed by class methods. Ex: Role.editor() will get the instance created from the row with name of “editor”
|
5
|
+
|
6
|
+
|
7
|
+
Usage in Model class:
|
8
|
+
|
9
|
+
acts_as_constant # default constant name will be in the table's column 'name'
|
10
|
+
acts_as_constant :fooby # constant name will be in the table's column 'fooby'
|
11
|
+
|
12
|
+
|
13
|
+
Usage by client:
|
14
|
+
|
15
|
+
Role.get(2) - Get the Role instance created from row 2 in the roles table.
|
16
|
+
|
17
|
+
Role.contributer - Get the Role instance created from the row with a name of "contributer".
|
18
|
+
|
19
|
+
Implementation
|
20
|
+
|
21
|
+
Create an array class attribute named _CONSTANTS. ex: ROLE_CONSTANTS
|
22
|
+
Create 2 public class methods. ex:
|
23
|
+
Role.get(id) – get the Role instance in ROLE_CONSTANTS[id]
|
24
|
+
Role.CONSTANTS – get the entire ROLE_CONSTANTS array
|
25
|
+
Create an instance of the class for each row in the class’s table.
|
26
|
+
Role instance 1 = {“name” => “contributer”, “id” => “1” }
|
27
|
+
Role instance 2 = {“name” => “editor”, “id” => “2” }
|
28
|
+
Add each of these Role instances to the ROLE_CONSTANT array. The instance will be indexed in the array by the row’s id value.
|
29
|
+
ROLE_CONSTANT1 = {“name” => “contributer”, “index” => “1” }
|
30
|
+
ROLE_CONSTANT2 = {“name” => “editor”, “index” => “2” }
|
31
|
+
Freeze each Role instance.
|
32
|
+
Add 2 more public class methods.
|
33
|
+
Role.contributer – returns the Role instance in ROLE_CONSTANTS1
|
34
|
+
Role.CONTRIBUTER – returns the Role instance in ROLE_CONSTANTS1
|
35
|
+
Freeze the array class attribute. ROLE_CONSTANTS
|
data/lib/acts_as_constant.rb
CHANGED
@@ -13,6 +13,7 @@ module ActiveRecord #:nodoc:
|
|
13
13
|
|
14
14
|
# let's set up a variable to represent the name of the klass
|
15
15
|
const = self.to_s
|
16
|
+
#puts "const = #{const}"
|
16
17
|
|
17
18
|
# create a constant array to hold the values
|
18
19
|
# create a nice get method to pull from the constant array
|
@@ -32,7 +33,9 @@ module ActiveRecord #:nodoc:
|
|
32
33
|
}
|
33
34
|
|
34
35
|
# let's build methods for everything in the database.
|
35
|
-
|
36
|
+
rows = eval "#{const}.find(:all)"
|
37
|
+
|
38
|
+
rows.each do |rec|
|
36
39
|
#puts rec.inspect
|
37
40
|
name = rec.send(col)
|
38
41
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: acts_as_constant
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2007-02-
|
6
|
+
version: 1.0.1
|
7
|
+
date: 2007-02-27 00:00:00 -05:00
|
8
8
|
summary: Acts as Constant
|
9
9
|
require_paths:
|
10
10
|
- lib
|