# File sql-serialize.rb, line 511 def sql_insert_assoc (dbi) instance_variables.each { |var| val = self.instance_eval(var) val_id = nil if (var.index("@sql_")==0) next # ignore meta data elsif (val.respond_to? :insert) val_id = val.instance_eval("sql_exist_in_db?(ObjectSpace._id2ref(" + dbi.id.to_s + "))") unless val_id val_id = val.insert (dbi, false) # insert but don't start a new transaction end sql_increase_refcount (dbi, val_id) elsif ((val.kind_of? TrueClass) || (val.kind_of? FalseClass)) bool = val ? 1 : 0 # bools are encoded as 1/0 here val_id = sql_basic_insert(dbi, bool, "Boolean") end unless (val_id.nil?) # if an associated object was found, then # insert a reference in the classname_assoc table. sql = "INSERT INTO " << sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "") + "_assoc") << " (" sql << sql_quote_name("sql_assoc_id") << ", " << sql_quote_name("symbol") sql << ", " << sql_quote_name("val_id") << ") VALUES (" sql << sql_assoc_id(dbi).to_s << ", " << sql_quote_str(var[1,var.length]) sql << ", " << val_id.to_s << ")" dbi.do_more(sql) end } end