has_custom_fields 0.0.3 → 0.0.4
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/VERSION +1 -1
- data/has_custom_fields.gemspec +5 -16
- data/has_custom_fields.tmproj +38 -2
- data/lib/custom_fields/custom_field_base.rb +4 -3
- data/lib/has_custom_fields.rb +9 -9
- metadata +21 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/has_custom_fields.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{has_custom_fields}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
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-
|
11
|
+
s.authors = ["kylejginavan"]
|
12
|
+
s.date = %q{2011-12-02}
|
13
13
|
s.description = %q{Uses a vertical schema to add custom fields.}
|
14
14
|
s.email = %q{kylejginavan@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -46,20 +46,9 @@ Gem::Specification.new do |s|
|
|
46
46
|
"spec/spec_helper.rb"
|
47
47
|
]
|
48
48
|
s.homepage = %q{http://github.com/kylejginavan/has_custom_fields}
|
49
|
-
s.require_paths = [
|
50
|
-
s.rubygems_version = %q{1.
|
49
|
+
s.require_paths = ["lib"]
|
50
|
+
s.rubygems_version = %q{1.5.2}
|
51
51
|
s.summary = %q{The easy way to add custom fields to any Rails model.}
|
52
|
-
s.test_files = [
|
53
|
-
"spec/fixtures/document.rb",
|
54
|
-
"spec/fixtures/person.rb",
|
55
|
-
"spec/fixtures/post.rb",
|
56
|
-
"spec/fixtures/preference.rb",
|
57
|
-
"spec/models/eav_model_with_no_arguments_spec.rb",
|
58
|
-
"spec/models/eav_model_with_options_spec.rb",
|
59
|
-
"spec/models/eav_validation_spec.rb",
|
60
|
-
"spec/schema.rb",
|
61
|
-
"spec/spec_helper.rb"
|
62
|
-
]
|
63
52
|
|
64
53
|
if s.respond_to? :specification_version then
|
65
54
|
s.specification_version = 3
|
data/has_custom_fields.tmproj
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
3
|
<plist version="1.0">
|
4
4
|
<dict>
|
5
|
+
<key>currentDocument</key>
|
6
|
+
<string>lib/has_custom_fields.rb</string>
|
5
7
|
<key>documents</key>
|
6
8
|
<array>
|
7
9
|
<dict>
|
@@ -18,10 +20,44 @@
|
|
18
20
|
<key>fileHierarchyDrawerWidth</key>
|
19
21
|
<integer>200</integer>
|
20
22
|
<key>metaData</key>
|
21
|
-
<dict
|
23
|
+
<dict>
|
24
|
+
<key>lib/custom_fields/custom_field_base.rb</key>
|
25
|
+
<dict>
|
26
|
+
<key>caret</key>
|
27
|
+
<dict>
|
28
|
+
<key>column</key>
|
29
|
+
<integer>0</integer>
|
30
|
+
<key>line</key>
|
31
|
+
<integer>9</integer>
|
32
|
+
</dict>
|
33
|
+
<key>firstVisibleColumn</key>
|
34
|
+
<integer>0</integer>
|
35
|
+
<key>firstVisibleLine</key>
|
36
|
+
<integer>0</integer>
|
37
|
+
</dict>
|
38
|
+
<key>lib/has_custom_fields.rb</key>
|
39
|
+
<dict>
|
40
|
+
<key>caret</key>
|
41
|
+
<dict>
|
42
|
+
<key>column</key>
|
43
|
+
<integer>20</integer>
|
44
|
+
<key>line</key>
|
45
|
+
<integer>56</integer>
|
46
|
+
</dict>
|
47
|
+
<key>firstVisibleColumn</key>
|
48
|
+
<integer>0</integer>
|
49
|
+
<key>firstVisibleLine</key>
|
50
|
+
<integer>49</integer>
|
51
|
+
</dict>
|
52
|
+
</dict>
|
53
|
+
<key>openDocuments</key>
|
54
|
+
<array>
|
55
|
+
<string>lib/custom_fields/custom_field_base.rb</string>
|
56
|
+
<string>lib/has_custom_fields.rb</string>
|
57
|
+
</array>
|
22
58
|
<key>showFileHierarchyDrawer</key>
|
23
59
|
<true/>
|
24
60
|
<key>windowFrame</key>
|
25
|
-
<string>{{
|
61
|
+
<string>{{465, 4}, {1203, 1024}}</string>
|
26
62
|
</dict>
|
27
63
|
</plist>
|
@@ -15,14 +15,15 @@ module CustomFields
|
|
15
15
|
validates_inclusion_of :style, :in => ALLOWABLE_TYPES, :message => "Invalid style. Should be #{ALLOWABLE_TYPES.join(', ')}."
|
16
16
|
FOO
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def select_options_data
|
20
20
|
(self.select_options || []).join(",")
|
21
21
|
end
|
22
22
|
|
23
|
-
def select_options_data=(
|
24
|
-
self.select_options =
|
23
|
+
def select_options_data=(data)
|
24
|
+
self.select_options = data.split(",").collect{|f| f.strip}
|
25
25
|
end
|
26
26
|
|
27
|
+
#scope :find_all_by_scope, lambda {|scope| {where("#{scope}_id = #{self.id}")}}
|
27
28
|
end
|
28
29
|
end
|
data/lib/has_custom_fields.rb
CHANGED
@@ -10,7 +10,7 @@ module ActiveRecord # :nodoc:
|
|
10
10
|
#
|
11
11
|
module CustomFields
|
12
12
|
|
13
|
-
ALLOWABLE_TYPES = ['select', '
|
13
|
+
ALLOWABLE_TYPES = ['select', 'checkbox', 'text', 'date']
|
14
14
|
|
15
15
|
Object.const_set('TagFacade', Class.new(Object)).class_eval do
|
16
16
|
def initialize(object_with_custom_fields, scope, scope_id)
|
@@ -86,7 +86,7 @@ module ActiveRecord # :nodoc:
|
|
86
86
|
# Provide default options
|
87
87
|
options[:fields_class_name] ||= self.name + 'Field'
|
88
88
|
options[:fields_table_name] ||= options[:fields_class_name].tableize
|
89
|
-
options[:fields_relationship_name] ||= options[:fields_class_name].
|
89
|
+
options[:fields_relationship_name] ||= options[:fields_class_name].underscore.to_sym
|
90
90
|
|
91
91
|
options[:values_class_name] ||= self.name + 'Attribute'
|
92
92
|
options[:values_table_name] ||= options[:values_class_name].tableize
|
@@ -229,7 +229,8 @@ module ActiveRecord # :nodoc:
|
|
229
229
|
end
|
230
230
|
t.timestamps
|
231
231
|
end
|
232
|
-
self.connection.add_index options[:fields_table_name], scope_fkeys + [options[:name_field]], :unique => true
|
232
|
+
self.connection.add_index options[:fields_table_name], scope_fkeys + [options[:name_field]], :unique => true,
|
233
|
+
:name => "#{options[:fields_table_name]}_unique_index"
|
233
234
|
|
234
235
|
# add foreign keys for scoping tables
|
235
236
|
options[:scopes].each do |s|
|
@@ -251,17 +252,17 @@ module ActiveRecord # :nodoc:
|
|
251
252
|
|
252
253
|
self.connection.create_table(options[:values_table_name], options) do |t|
|
253
254
|
t.integer options[:foreign_key], :null => false
|
254
|
-
t.integer options[:fields_table_name].foreign_key, :null => false
|
255
|
+
t.integer options[:fields_table_name].singularize.foreign_key, :null => false
|
255
256
|
t.string options[:value_field], :null => false
|
256
257
|
t.timestamps
|
257
258
|
end
|
258
259
|
|
259
260
|
self.connection.add_index options[:values_table_name], options[:foreign_key]
|
260
|
-
self.connection.add_index options[:values_table_name], options[:fields_table_name].foreign_key
|
261
|
+
self.connection.add_index options[:values_table_name], options[:fields_table_name].singularize.foreign_key
|
261
262
|
|
262
263
|
self.connection.execute <<-FOO
|
263
264
|
alter table #{options[:values_table_name]}
|
264
|
-
add foreign key (#{options[:fields_table_name].foreign_key})
|
265
|
+
add foreign key (#{options[:fields_table_name].singularize.foreign_key})
|
265
266
|
references #{options[:fields_table_name]}(#{eval(options[:fields_class_name]).primary_key})
|
266
267
|
FOO
|
267
268
|
end
|
@@ -326,11 +327,11 @@ module ActiveRecord # :nodoc:
|
|
326
327
|
def get_value_object(attribute_name, scope, scope_id)
|
327
328
|
::Rails.logger.debug("scope/id is: #{scope}/#{scope_id}")
|
328
329
|
options = custom_field_options[self.class.name]
|
329
|
-
model_fkey = options[:foreign_key]
|
330
|
+
model_fkey = options[:foreign_key].singularize
|
330
331
|
fields_class = options[:fields_class_name]
|
331
332
|
values_class = options[:values_class_name]
|
332
333
|
value_field = options[:value_field]
|
333
|
-
fields_fkey = options[:fields_table_name].foreign_key
|
334
|
+
fields_fkey = options[:fields_table_name].singularize.foreign_key
|
334
335
|
fields = Object.const_get(fields_class)
|
335
336
|
values = Object.const_get(values_class)
|
336
337
|
::Rails.logger.debug("fkey is: #{fields_fkey}")
|
@@ -347,7 +348,6 @@ module ActiveRecord # :nodoc:
|
|
347
348
|
value_object = values.new model_fkey => self.id,
|
348
349
|
fields_fkey => f.id
|
349
350
|
end
|
350
|
-
|
351
351
|
return value_object
|
352
352
|
end
|
353
353
|
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_custom_fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- kylejginavan
|
@@ -10,7 +15,8 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2011-
|
18
|
+
date: 2011-12-02 00:00:00 -06:00
|
19
|
+
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: builder
|
@@ -20,6 +26,9 @@ dependencies:
|
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
23
32
|
version: "0"
|
24
33
|
type: :runtime
|
25
34
|
version_requirements: *id001
|
@@ -60,6 +69,7 @@ files:
|
|
60
69
|
- spec/schema.rb
|
61
70
|
- spec/spec.opts
|
62
71
|
- spec/spec_helper.rb
|
72
|
+
has_rdoc: true
|
63
73
|
homepage: http://github.com/kylejginavan/has_custom_fields
|
64
74
|
licenses: []
|
65
75
|
|
@@ -73,27 +83,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
83
|
requirements:
|
74
84
|
- - ">="
|
75
85
|
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
76
89
|
version: "0"
|
77
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
91
|
none: false
|
79
92
|
requirements:
|
80
93
|
- - ">="
|
81
94
|
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
96
|
+
segments:
|
97
|
+
- 0
|
82
98
|
version: "0"
|
83
99
|
requirements: []
|
84
100
|
|
85
101
|
rubyforge_project:
|
86
|
-
rubygems_version: 1.
|
102
|
+
rubygems_version: 1.5.2
|
87
103
|
signing_key:
|
88
104
|
specification_version: 3
|
89
105
|
summary: The easy way to add custom fields to any Rails model.
|
90
|
-
test_files:
|
91
|
-
|
92
|
-
- spec/fixtures/person.rb
|
93
|
-
- spec/fixtures/post.rb
|
94
|
-
- spec/fixtures/preference.rb
|
95
|
-
- spec/models/eav_model_with_no_arguments_spec.rb
|
96
|
-
- spec/models/eav_model_with_options_spec.rb
|
97
|
-
- spec/models/eav_validation_spec.rb
|
98
|
-
- spec/schema.rb
|
99
|
-
- spec/spec_helper.rb
|
106
|
+
test_files: []
|
107
|
+
|