json_record 1.0.4 → 1.0.5
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/CHANGE_LOG +3 -0
- data/VERSION +1 -1
- data/json_record.gemspec +2 -2
- data/lib/json_record/json_field.rb +1 -1
- data/lib/json_record/schema.rb +16 -4
- data/lib/json_record/serialized.rb +2 -2
- metadata +2 -2
data/CHANGE_LOG
CHANGED
@@ -15,3 +15,6 @@
|
|
15
15
|
1.0.4
|
16
16
|
- Fixed bug with tracking changes when initializing an EmbeddedDocument.
|
17
17
|
- Removed tracking changes of keys that are EmbeddedDocuments
|
18
|
+
|
19
|
+
1.0.5
|
20
|
+
- Fixed bug with initializing new EmbeddedDocumentArray with the proper parent when there is no data to deserialize.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.5
|
data/json_record.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{json_record}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian Durand"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-23}
|
13
13
|
s.email = %q{brian@embellishedvisions.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.rdoc"
|
@@ -26,7 +26,7 @@ module JsonRecord
|
|
26
26
|
@attributes = {}
|
27
27
|
@schemas.each do |schema|
|
28
28
|
schema.fields.values.each do |field|
|
29
|
-
@attributes[field.name] = field.multivalued? ? EmbeddedDocumentArray.new(field.type,
|
29
|
+
@attributes[field.name] = field.multivalued? ? EmbeddedDocumentArray.new(field.type, @record) : field.default
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
data/lib/json_record/schema.rb
CHANGED
@@ -12,7 +12,7 @@ module JsonRecord
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# Define a single valued field in the schema.
|
15
|
-
# The first argument
|
15
|
+
# The first argument is the field name. This must be unique for the class accross all attributes.
|
16
16
|
#
|
17
17
|
# The optional second argument can be used to specify the class of the field values. It will default to
|
18
18
|
# String if not specified. Valid types are String, Integer, Float, Date, Time, DateTime, Boolean, Array, Hash,
|
@@ -37,6 +37,18 @@ module JsonRecord
|
|
37
37
|
define_json_accessor(field, json_field_name)
|
38
38
|
end
|
39
39
|
|
40
|
+
# Define a multi valued field in the schema.
|
41
|
+
# The first argument is the field name. This must be unique for the class accross all attributes.
|
42
|
+
#
|
43
|
+
# The optional second argument should be the class of field values. This class must include EmbeddedDocument.
|
44
|
+
# If it is not specified, the class name will be guessed from the field name.
|
45
|
+
#
|
46
|
+
# The last argument can be :unique => field_name which is used to indicate that the values in the field
|
47
|
+
# must have unique values in the indicated field name.
|
48
|
+
#
|
49
|
+
# The value of the field will always be an EmbeddedDocumentArray and adding and removing values is as
|
50
|
+
# simple as appending them to the array. You can also call the build method on the array to keep the syntax the
|
51
|
+
# same as when dealing with ActiveRecord has_many associations.
|
40
52
|
def many (name, *args)
|
41
53
|
name = name.to_s
|
42
54
|
options = args.extract_options!
|
@@ -49,7 +61,7 @@ module JsonRecord
|
|
49
61
|
|
50
62
|
private
|
51
63
|
|
52
|
-
def add_json_validations (field, options)
|
64
|
+
def add_json_validations (field, options) #:nodoc:
|
53
65
|
@klass.validates_presence_of(field.name) if options[:required]
|
54
66
|
@klass.validates_format_of(field.name, :with => options[:format], :allow_blank => true) if options[:format]
|
55
67
|
|
@@ -110,7 +122,7 @@ module JsonRecord
|
|
110
122
|
end
|
111
123
|
end
|
112
124
|
|
113
|
-
def define_json_accessor (field, json_field_name)
|
125
|
+
def define_json_accessor (field, json_field_name) #:nodoc:
|
114
126
|
@klass.send(:define_method, field.name) {read_json_attribute(json_field_name, field)}
|
115
127
|
@klass.send(:define_method, "#{field.name}?") {!!read_json_attribute(json_field_name, field)} if field.type == Boolean
|
116
128
|
@klass.send(:define_method, "#{field.name}=") {|val| write_json_attribute(json_field_name, field, val)}
|
@@ -122,7 +134,7 @@ module JsonRecord
|
|
122
134
|
end
|
123
135
|
end
|
124
136
|
|
125
|
-
def define_many_json_accessor (field, json_field_name)
|
137
|
+
def define_many_json_accessor (field, json_field_name) #:nodoc:
|
126
138
|
@klass.send(:define_method, field.name) {self.read_json_attribute(json_field_name, field)}
|
127
139
|
@klass.send(:define_method, "#{field.name}=") {|val| self.write_json_attribute(json_field_name, field, val)}
|
128
140
|
end
|
@@ -60,12 +60,12 @@ module JsonRecord
|
|
60
60
|
@json_fields
|
61
61
|
end
|
62
62
|
|
63
|
-
def reload_with_serialized_json (*args)
|
63
|
+
def reload_with_serialized_json (*args) #:nodoc:
|
64
64
|
@json_fields = nil
|
65
65
|
reload_without_serialized_json(*args)
|
66
66
|
end
|
67
67
|
|
68
|
-
def attributes_with_serialized_json
|
68
|
+
def attributes_with_serialized_json #:nodoc:
|
69
69
|
attrs = json_attributes.reject{|k,v| !json_field_names.include?(k)}
|
70
70
|
attrs.merge!(attributes_without_serialized_json)
|
71
71
|
json_serialized_fields.keys.each{|name| attrs.delete(name)}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Durand
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-23 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|