simple_record 1.1.52 → 1.1.53
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 +21 -6
- data/lib/simple_record/attributes.rb +4 -3
- data/test/test_base.rb +1 -1
- data/test/test_simple_record.rb +13 -0
- metadata +1 -1
data/lib/simple_record.rb
CHANGED
@@ -530,13 +530,28 @@ module SimpleRecord
|
|
530
530
|
def set(name, value)
|
531
531
|
|
532
532
|
att_meta = defined_attributes_local[name.to_sym]
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
533
|
+
if att_meta.nil?
|
534
|
+
# check if it ends with id and see if att_meta is there
|
535
|
+
ends_with = name.to_s[-3, 3]
|
536
|
+
if ends_with == "_id"
|
537
|
+
puts 'ends with id'
|
538
|
+
n2 = name.to_s[0, name.length-3]
|
539
|
+
puts 'n2=' + n2
|
540
|
+
att_meta = defined_attributes_local[n2.to_sym]
|
541
|
+
puts 'defined_attributes_local=' + defined_attributes_local.inspect
|
542
|
+
attname = name.to_s
|
543
|
+
attvalue = value
|
544
|
+
name = n2
|
545
|
+
end
|
546
|
+
return if att_meta.nil?
|
537
547
|
else
|
538
|
-
|
539
|
-
|
548
|
+
if att_meta.type == :belongs_to
|
549
|
+
attname = name.to_s + '_id'
|
550
|
+
attvalue = value.nil? ? nil : value.id
|
551
|
+
else
|
552
|
+
attname = name.to_s
|
553
|
+
attvalue = value
|
554
|
+
end
|
540
555
|
end
|
541
556
|
attvalue = strip_array(attvalue)
|
542
557
|
make_dirty(attname, attvalue)
|
@@ -132,7 +132,7 @@ module SimpleRecord
|
|
132
132
|
|
133
133
|
# Define reader method
|
134
134
|
send(:define_method, arg) do
|
135
|
-
|
135
|
+
puts 'GETTING ' + arg.to_s
|
136
136
|
attribute = defined_attributes_local[arg]
|
137
137
|
options2 = attribute.options # @@belongs_to_map[arg]
|
138
138
|
class_name = options2[:class_name] || arg.to_s[0...1].capitalize + arg.to_s[1...arg.to_s.length]
|
@@ -144,7 +144,8 @@ module SimpleRecord
|
|
144
144
|
# puts 'val=' + @attributes[arg_id][0].inspect unless @attributes[arg_id].nil?
|
145
145
|
ret = nil
|
146
146
|
arg_id = arg.to_s + '_id'
|
147
|
-
|
147
|
+
arg_id_val = send("#{arg_id}")
|
148
|
+
if arg_id_val
|
148
149
|
if !cache_store.nil?
|
149
150
|
arg_id_val = @attributes[arg_id][0]
|
150
151
|
cache_key = self.class.cache_key(class_name, arg_id_val)
|
@@ -153,7 +154,7 @@ module SimpleRecord
|
|
153
154
|
# puts 'belongs_to incache=' + ret.inspect
|
154
155
|
end
|
155
156
|
if ret.nil?
|
156
|
-
to_eval = "#{class_name}.find(
|
157
|
+
to_eval = "#{class_name}.find('#{arg_id_val}')"
|
157
158
|
# puts 'to eval=' + to_eval
|
158
159
|
begin
|
159
160
|
ret = eval(to_eval) # (defined? #{arg}_id)
|
data/test/test_base.rb
CHANGED
@@ -14,7 +14,7 @@ class TestBase < Test::Unit::TestCase
|
|
14
14
|
#puts 'inspecting config = ' + @config.inspect
|
15
15
|
|
16
16
|
# Establish AWS connection directly
|
17
|
-
@@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request
|
17
|
+
@@sdb = Aws::SdbInterface.new(@config['amazon']['access_key'], @config['amazon']['secret_key'], {:connection_mode => :per_request})
|
18
18
|
|
19
19
|
SimpleRecord.establish_connection(@config['amazon']['access_key'], @config['amazon']['secret_key'], :connection_mode=>:single)
|
20
20
|
SimpleRecord::Base.set_domain_prefix("simplerecord_tests_")
|
data/test/test_simple_record.rb
CHANGED
@@ -458,6 +458,19 @@ class TestSimpleRecord < TestBase
|
|
458
458
|
assert mm.name = mm2.name
|
459
459
|
end
|
460
460
|
|
461
|
+
def test_constructor_using_belongs_to_ids
|
462
|
+
mm = MyModel.new({:name=>"myname"})
|
463
|
+
mm.save
|
464
|
+
|
465
|
+
mm2 = MyChildModel.new({"name"=>"myname2", :my_model_id=>mm.id})
|
466
|
+
puts 'mm2=' + mm2.inspect
|
467
|
+
assert mm.id == mm2.my_model_id, "#{mm.id} != #{mm2.my_model_id}"
|
468
|
+
mm3 = mm2.my_model
|
469
|
+
puts 'mm3=' + mm3.inspect
|
470
|
+
assert mm.name == mm3.name
|
471
|
+
|
472
|
+
end
|
473
|
+
|
461
474
|
def test_update_attributes
|
462
475
|
mm = MyModel.new({:name=>"myname"})
|
463
476
|
mm.save
|