252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
|
# File 'lib/simple_record/attributes.rb', line 252
def set(name, value, dirtify=true)
attname = name.to_s
name = name.to_sym
att_meta = get_att_meta(name)
store_rb_val = false
if att_meta.nil?
ends_with = name.to_s[-3, 3]
if ends_with == "_id"
n2 = name.to_s[0, name.length-3]
att_meta = defined_attributes_local[n2.to_sym]
attname = name.to_s
attvalue = value
name = n2.to_sym
end
return if att_meta.nil?
else
if att_meta.type == :belongs_to
ends_with = name.to_s[-3, 3]
if ends_with == "_id"
att_name = name.to_s
attvalue = value
else
attname = name.to_s + '_id'
attvalue = value.nil? ? nil : value.id
store_rb_val = true
end
elsif att_meta.type == :clob
make_dirty(name, value) if dirtify
@lobs[name] = value
return
else
attname = name.to_s
attvalue = att_meta.init_value(value)
end
end
attvalue = strip_array(attvalue)
make_dirty(name, attvalue) if dirtify
sdb_val = ruby_to_sdb(name, attvalue)
@attributes[attname] = sdb_val
if store_rb_val
@attributes_rb[name.to_s] = value
else
@attributes_rb.delete(name.to_s)
end
end
|