datts_right 0.0.1 → 0.0.2
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.textile +10 -4
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/datts_right.gemspec +21 -3
- data/lib/generators/migration/migration_generator.rb +1 -1
- metadata +95 -5
data/README.textile
CHANGED
@@ -20,6 +20,7 @@ h2. Installation
|
|
20
20
|
Create a migration:
|
21
21
|
|
22
22
|
pre. create_table :datts do |t|
|
23
|
+
t.string :name, :null => false
|
23
24
|
t.string :attr_key, :null => false
|
24
25
|
t.string :object_type, :null => false
|
25
26
|
t.string :attributable_type, :null => false
|
@@ -29,6 +30,12 @@ pre. create_table :datts do |t|
|
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
33
|
+
* *name* is not important at the moment, but I intend to make better use of it in the future.
|
34
|
+
* *attr_key* the name of the dynamic attribute
|
35
|
+
* *object_type* what type of value is saved. See "object_type":#object_type.
|
36
|
+
* *attributable_id* and *attributable_type* are for the polymorphic association
|
37
|
+
* *integer_value*, *string_value*, *boolean_value*, *text_value*, *float_value* are used to store the data. See "object_type":#object_type.
|
38
|
+
|
32
39
|
Add this to your Gemfile:
|
33
40
|
|
34
41
|
@gem 'datts_right'@
|
@@ -63,7 +70,7 @@ h3. @instance.dynamic_columns
|
|
63
70
|
|
64
71
|
However, dynamic_attributes doesn't give us much information. What if we want to find out the list of dynamic attributes already available?
|
65
72
|
|
66
|
-
@user.dynamic_columns # {:age => {:object_type => "integer", :value => 820}}
|
73
|
+
pre. @user.dynamic_columns # {:age => {:object_type => "integer", :value => 820}}
|
67
74
|
|
68
75
|
h3. dynamic_attribute?(:some_attribute)
|
69
76
|
|
@@ -75,10 +82,8 @@ The dynamic attributes are only actually saved when save is called on the record
|
|
75
82
|
|
76
83
|
pre. @user.add_dynamic_attribute(:gunslinger, "boolean") # a column is already written on the "datts" table, with a null value.
|
77
84
|
@user.add_dynamic_attribute(:middle_name, "string") # a column is already written on the "datts" table, with a null value.
|
78
|
-
|
79
85
|
@user.gunslinger = true # saves into memory
|
80
86
|
@user.middle_name = "Unknown" # saves into memory
|
81
|
-
|
82
87
|
@user.save # the respective dynamic attribute columns are written in the datts table
|
83
88
|
|
84
89
|
h2. Structure of the datts table
|
@@ -86,6 +91,7 @@ h2. Structure of the datts table
|
|
86
91
|
Although you probably shouldn't work with it directly, the datts table looks like this:
|
87
92
|
|
88
93
|
pre. ActiveRecord::Base.connection.create_table(:datts) do |t|
|
94
|
+
t.string :name, :null => false
|
89
95
|
t.string :attr_key, :null => false
|
90
96
|
t.string :object_type, :null => false
|
91
97
|
t.string :attributable_type, :null => false
|
@@ -110,7 +116,7 @@ pre. {
|
|
110
116
|
|
111
117
|
*Why have different value columns?* Because I couldn't find any other way to perform SQL operations/calculations on a generic "value" column. Besides, what kind of column would that be? A text blob?
|
112
118
|
|
113
|
-
h2. Dynamic attribute "type"
|
119
|
+
h2(#object_type). Dynamic attribute "type"
|
114
120
|
|
115
121
|
Here are the different types of dynamic attributes you can save:
|
116
122
|
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
|
|
18
18
|
gem.summary = %Q{Allows saving of dynamic attributes in your ActiveRecord model}
|
19
19
|
gem.description = %Q{Creates a separate table that saves all your dynamic attributes.}
|
20
20
|
gem.email = "ramon@tayag.net"
|
21
|
-
gem.authors = ["
|
21
|
+
gem.authors = ["Ramon Tayag"]
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
23
|
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
24
|
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/datts_right.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{datts_right}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["
|
12
|
-
s.date = %q{2011-04-
|
11
|
+
s.authors = ["Ramon Tayag"]
|
12
|
+
s.date = %q{2011-04-11}
|
13
13
|
s.description = %q{Creates a separate table that saves all your dynamic attributes.}
|
14
14
|
s.email = %q{ramon@tayag.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -114,6 +114,12 @@ Gem::Specification.new do |s|
|
|
114
114
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
115
115
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
116
116
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
117
|
+
s.add_development_dependency(%q<autotest>, [">= 0"])
|
118
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
119
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
120
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
121
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
122
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
117
123
|
else
|
118
124
|
s.add_dependency(%q<datts_right>, [">= 0"])
|
119
125
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
@@ -172,6 +178,12 @@ Gem::Specification.new do |s|
|
|
172
178
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
173
179
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
174
180
|
s.add_dependency(%q<rcov>, [">= 0"])
|
181
|
+
s.add_dependency(%q<autotest>, [">= 0"])
|
182
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
183
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
184
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
185
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
186
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
175
187
|
end
|
176
188
|
else
|
177
189
|
s.add_dependency(%q<datts_right>, [">= 0"])
|
@@ -231,6 +243,12 @@ Gem::Specification.new do |s|
|
|
231
243
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
232
244
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
233
245
|
s.add_dependency(%q<rcov>, [">= 0"])
|
246
|
+
s.add_dependency(%q<autotest>, [">= 0"])
|
247
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
248
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
249
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
250
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
251
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
234
252
|
end
|
235
253
|
end
|
236
254
|
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datts_right
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
-
|
13
|
+
- Ramon Tayag
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-11 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -874,6 +874,96 @@ dependencies:
|
|
874
874
|
name: rcov
|
875
875
|
version_requirements: *id057
|
876
876
|
prerelease: false
|
877
|
+
- !ruby/object:Gem::Dependency
|
878
|
+
type: :development
|
879
|
+
requirement: &id058 !ruby/object:Gem::Requirement
|
880
|
+
none: false
|
881
|
+
requirements:
|
882
|
+
- - ">="
|
883
|
+
- !ruby/object:Gem::Version
|
884
|
+
hash: 3
|
885
|
+
segments:
|
886
|
+
- 0
|
887
|
+
version: "0"
|
888
|
+
name: autotest
|
889
|
+
version_requirements: *id058
|
890
|
+
prerelease: false
|
891
|
+
- !ruby/object:Gem::Dependency
|
892
|
+
type: :development
|
893
|
+
requirement: &id059 !ruby/object:Gem::Requirement
|
894
|
+
none: false
|
895
|
+
requirements:
|
896
|
+
- - ">="
|
897
|
+
- !ruby/object:Gem::Version
|
898
|
+
hash: 3
|
899
|
+
segments:
|
900
|
+
- 0
|
901
|
+
version: "0"
|
902
|
+
name: sqlite3
|
903
|
+
version_requirements: *id059
|
904
|
+
prerelease: false
|
905
|
+
- !ruby/object:Gem::Dependency
|
906
|
+
type: :development
|
907
|
+
requirement: &id060 !ruby/object:Gem::Requirement
|
908
|
+
none: false
|
909
|
+
requirements:
|
910
|
+
- - ~>
|
911
|
+
- !ruby/object:Gem::Version
|
912
|
+
hash: 3
|
913
|
+
segments:
|
914
|
+
- 2
|
915
|
+
- 3
|
916
|
+
- 0
|
917
|
+
version: 2.3.0
|
918
|
+
name: rspec
|
919
|
+
version_requirements: *id060
|
920
|
+
prerelease: false
|
921
|
+
- !ruby/object:Gem::Dependency
|
922
|
+
type: :development
|
923
|
+
requirement: &id061 !ruby/object:Gem::Requirement
|
924
|
+
none: false
|
925
|
+
requirements:
|
926
|
+
- - ~>
|
927
|
+
- !ruby/object:Gem::Version
|
928
|
+
hash: 23
|
929
|
+
segments:
|
930
|
+
- 1
|
931
|
+
- 0
|
932
|
+
- 0
|
933
|
+
version: 1.0.0
|
934
|
+
name: bundler
|
935
|
+
version_requirements: *id061
|
936
|
+
prerelease: false
|
937
|
+
- !ruby/object:Gem::Dependency
|
938
|
+
type: :development
|
939
|
+
requirement: &id062 !ruby/object:Gem::Requirement
|
940
|
+
none: false
|
941
|
+
requirements:
|
942
|
+
- - ~>
|
943
|
+
- !ruby/object:Gem::Version
|
944
|
+
hash: 7
|
945
|
+
segments:
|
946
|
+
- 1
|
947
|
+
- 5
|
948
|
+
- 2
|
949
|
+
version: 1.5.2
|
950
|
+
name: jeweler
|
951
|
+
version_requirements: *id062
|
952
|
+
prerelease: false
|
953
|
+
- !ruby/object:Gem::Dependency
|
954
|
+
type: :development
|
955
|
+
requirement: &id063 !ruby/object:Gem::Requirement
|
956
|
+
none: false
|
957
|
+
requirements:
|
958
|
+
- - ">="
|
959
|
+
- !ruby/object:Gem::Version
|
960
|
+
hash: 3
|
961
|
+
segments:
|
962
|
+
- 0
|
963
|
+
version: "0"
|
964
|
+
name: rcov
|
965
|
+
version_requirements: *id063
|
966
|
+
prerelease: false
|
877
967
|
description: Creates a separate table that saves all your dynamic attributes.
|
878
968
|
email: ramon@tayag.net
|
879
969
|
executables: []
|