# File sql-serialize.rb, line 563 def sql_delete_assocs (dbi) rows = Array.new ["array", "hash", "assoc"].each { |range| sql = "SELECT id, class FROM " sql << sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "") + "_" + range) << ", " sql << sql_quote_name("sql_ids") sql << "WHERE id = val_id AND sql_assoc_id = " << sql_assoc_id(dbi).to_s dbi.select_all(sql) { |row| # if it is a simple type (no associated objects), then just delete it if (["Boolean", "Bignum", "Exception", "File", "Fixnum", "Float", "Date", "String", "Time"].include? row["class"]) sql = "DELETE FROM " << sql_quote_name("sql_ids") << " WHERE " sql << sql_quote_name("id") << " = " << row["id"].to_s dbi.do_more(sql) else # otherwise it must have SQLSerializable mixed in obj = instance_eval(row["class"] + ".new") obj.sql_assoc_id = row["id"] # recursive delete obj.delete(dbi, false) end } } end