simple_record 1.1.43 → 1.1.44
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/lib/simple_record.rb +36 -42
- data/lib/simple_record/attributes.rb +6 -3
- data/lib/simple_record/translations.rb +1 -1
- data/test/test_simple_record.rb +5 -1
- metadata +1 -1
data/lib/simple_record.rb
CHANGED
@@ -204,25 +204,6 @@ module SimpleRecord
|
|
204
204
|
return ret
|
205
205
|
end
|
206
206
|
|
207
|
-
# Since SimpleDB supports multiple attributes per value, the values are an array.
|
208
|
-
# This method will return the value unwrapped if it's the only, otherwise it will return the array.
|
209
|
-
def get_attribute(arg)
|
210
|
-
# Check if this arg is already converted
|
211
|
-
arg_s = arg.to_s
|
212
|
-
instance_var = ("@" + arg_s)
|
213
|
-
# puts "defined?(#{instance_var.to_sym}) " + (defined?(instance_var.to_sym)).inspect
|
214
|
-
# if defined?(instance_var.to_sym) # this returns "method" for some reason??
|
215
|
-
# puts "attribute #{instance_var} is defined"
|
216
|
-
ret = instance_variable_get(instance_var)
|
217
|
-
# puts 'ret=' + ret.to_s
|
218
|
-
return ret if !ret.nil?
|
219
|
-
# end
|
220
|
-
ret = get_attribute_sdb(arg)
|
221
|
-
ret = sdb_to_ruby(arg, ret)
|
222
|
-
# puts "Setting instance var #{instance_var}"
|
223
|
-
instance_variable_set(instance_var, ret)
|
224
|
-
return ret
|
225
|
-
end
|
226
207
|
|
227
208
|
def make_dirty(arg, value)
|
228
209
|
arg = arg.to_s
|
@@ -513,40 +494,53 @@ module SimpleRecord
|
|
513
494
|
return run_before_destroy && delete && run_after_destroy
|
514
495
|
end
|
515
496
|
|
516
|
-
def delete_niled(to_delete)
|
517
|
-
# puts 'to_delete=' + to_delete.inspect
|
518
|
-
if to_delete.size > 0
|
519
|
-
# puts 'Deleting attributes=' + to_delete.inspect
|
520
|
-
delete_attributes to_delete
|
521
|
-
end
|
522
|
-
end
|
523
497
|
|
498
|
+
# Since SimpleDB supports multiple attributes per value, the values are an array.
|
499
|
+
# This method will return the value unwrapped if it's the only, otherwise it will return the array.
|
500
|
+
def get_attribute(arg)
|
501
|
+
# Check if this arg is already converted
|
502
|
+
arg_s = arg.to_s
|
503
|
+
instance_var = ("@" + arg_s)
|
504
|
+
# puts "defined?(#{instance_var.to_sym}) " + (defined?(instance_var.to_sym)).inspect
|
505
|
+
# if defined?(instance_var.to_sym) # this returns "method" for some reason??
|
506
|
+
# puts "attribute #{instance_var} is defined"
|
507
|
+
ret = instance_variable_get(instance_var)
|
508
|
+
# puts 'ret=' + ret.to_s
|
509
|
+
return ret if !ret.nil?
|
510
|
+
# end
|
511
|
+
ret = get_attribute_sdb(arg)
|
512
|
+
ret = sdb_to_ruby(arg, ret)
|
513
|
+
# puts "Setting instance var #{instance_var}"
|
514
|
+
instance_variable_set(instance_var, ret)
|
515
|
+
return ret
|
516
|
+
end
|
517
|
+
|
524
518
|
def set(name, value)
|
525
519
|
|
526
520
|
att_meta = defined_attributes_local[name.to_sym]
|
527
521
|
return if att_meta.nil?
|
528
522
|
if att_meta.type == :belongs_to
|
529
|
-
|
530
|
-
|
523
|
+
attname = name.to_s + '_id'
|
524
|
+
attvalue = value.nil? ? nil : value.id
|
525
|
+
else
|
526
|
+
attname = name
|
527
|
+
attvalue = value
|
531
528
|
end
|
532
|
-
value = strip_array(
|
533
|
-
make_dirty(
|
534
|
-
instance_var = "@" +
|
529
|
+
value = strip_array(attvalue)
|
530
|
+
make_dirty(attname, attvalue)
|
531
|
+
instance_var = "@" + attname.to_s
|
535
532
|
# puts 'ARG=' + arg.to_s
|
536
|
-
sdb_val = ruby_to_sdb(name,
|
537
|
-
@attributes[
|
533
|
+
sdb_val = ruby_to_sdb(name, attvalue)
|
534
|
+
@attributes[attname.to_s] = sdb_val
|
538
535
|
value = wrap_if_required(name, value, sdb_val)
|
539
|
-
instance_variable_set(instance_var,
|
536
|
+
instance_variable_set(instance_var, attvalue)
|
540
537
|
end
|
541
538
|
|
542
|
-
def
|
543
|
-
|
544
|
-
if
|
545
|
-
|
546
|
-
|
547
|
-
else
|
548
|
-
make_dirty(arg_id, value.id)
|
549
|
-
self[arg_id]=value.id
|
539
|
+
def delete_niled(to_delete)
|
540
|
+
# puts 'to_delete=' + to_delete.inspect
|
541
|
+
if to_delete.size > 0
|
542
|
+
# puts 'Deleting attributes=' + to_delete.inspect
|
543
|
+
delete_attributes to_delete
|
550
544
|
end
|
551
545
|
end
|
552
546
|
|
@@ -119,11 +119,11 @@ module SimpleRecord
|
|
119
119
|
# This method will also create an {association)_id method that will return the ID of the foreign object
|
120
120
|
# without actually materializing it.
|
121
121
|
def belongs_to(association_id, options = {})
|
122
|
-
attribute = Attribute.new(:belongs_to, options)
|
123
|
-
defined_attributes[association_id] = attribute
|
124
122
|
arg = association_id
|
125
123
|
arg_s = arg.to_s
|
126
124
|
arg_id = arg.to_s + '_id'
|
125
|
+
attribute = Attribute.new(:belongs_to, options)
|
126
|
+
defined_attributes[arg] = attribute
|
127
127
|
|
128
128
|
# todo: should also handle foreign_key http://74.125.95.132/search?q=cache:KqLkxuXiBBQJ:wiki.rubyonrails.org/rails/show/belongs_to+rails+belongs_to&hl=en&ct=clnk&cd=1&gl=us
|
129
129
|
# puts "arg_id=#{arg}_id"
|
@@ -132,6 +132,7 @@ module SimpleRecord
|
|
132
132
|
|
133
133
|
# Define reader method
|
134
134
|
send(:define_method, arg) do
|
135
|
+
puts 'GETTING ' + arg.to_s
|
135
136
|
attribute = defined_attributes_local[arg]
|
136
137
|
options2 = attribute.options # @@belongs_to_map[arg]
|
137
138
|
class_name = options2[:class_name] || arg.to_s[0...1].capitalize + arg.to_s[1...arg.to_s.length]
|
@@ -173,7 +174,7 @@ module SimpleRecord
|
|
173
174
|
|
174
175
|
# Define writer method
|
175
176
|
send(:define_method, arg.to_s + "=") do |value|
|
176
|
-
|
177
|
+
set(arg, value)
|
177
178
|
end
|
178
179
|
|
179
180
|
|
@@ -222,6 +223,8 @@ module SimpleRecord
|
|
222
223
|
|
223
224
|
end
|
224
225
|
|
226
|
+
|
227
|
+
|
225
228
|
def self.handle_virtuals(attrs)
|
226
229
|
@@virtuals.each do |virtual|
|
227
230
|
#we first copy the information for the virtual to an instance variable of the same name
|
@@ -13,7 +13,7 @@ module SimpleRecord
|
|
13
13
|
name = name.to_s
|
14
14
|
|
15
15
|
# puts "Converting #{name} to sdb value=#{value}"
|
16
|
-
|
16
|
+
puts "atts_local=" + defined_attributes_local.inspect
|
17
17
|
|
18
18
|
att_meta = defined_attributes_local[name.to_sym]
|
19
19
|
|
data/test/test_simple_record.rb
CHANGED
@@ -114,10 +114,14 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
114
114
|
child.my_model = mm
|
115
115
|
child.save
|
116
116
|
|
117
|
+
puts "child=" + child.inspect
|
117
118
|
sleep 1
|
118
119
|
|
119
120
|
child = MyChildModel.find(child.id)
|
120
|
-
puts child.
|
121
|
+
puts "child find=" + child.inspect
|
122
|
+
puts "child.my_model_id = " + child.my_model_id.to_s
|
123
|
+
assert !child.my_model_id.nil?
|
124
|
+
assert !child.my_model.nil?
|
121
125
|
assert child.my_model_id == mm.id
|
122
126
|
end
|
123
127
|
|