# File ar-extensions/lib/ar-extensions/temporary_table.rb, line 73
  def self.create_temporary_table( options={} )
    options[:table_name] = "temp_#{self.table_name}" unless options[:table_name]
    options[:like] = self unless options[:like] 
    options[:temporary] = true if not options[:permanent] and not options.has_key?( :temporary )
    table_name = options[:table_name]
    model_name = options[:model_name] || ActiveSupport::Inflector.classify( table_name )        
    raise Exception.new( "Model #{model_name} already exists! \n" ) if Object.const_defined? model_name 
    
    like_table_name = options[:like].table_name || self.table_name
    sql = "CREATE #{options[:temporary] ? 'TEMPORARY' : ''} TABLE #{table_name} LIKE #{like_table_name}"
    connection.execute( sql )           
    
    eval "class ::#{model_name} < #{ActiveRecord::TemporaryTable.name}
                                        set_table_name :#{table_name}
                                end"

    @@temporary_table_hsh[ model = Object.const_get( model_name ) ] = true
    if block_given?
      yield model
      model.drop
      nil
    else
      model
    end
  end