Récupérer la liste des tables de la base de données dans une application rubyonrails 3 ActiveRecord::Base.connection.tables

Comme d'habitude tout est dans le titre : 

Voici comment récupérer la liste des tables de la base de données dans une application rubyonrails 3

ActiveRecord::Base.connection.tables

=> ["schema_migrations", "sessions", "products", "families", .....]

 

Après suivant les besoins vous pouvez lister le schema complet :


    ts = 
ActiveRecord::Base.connection
.tables
    ts.delete("schema_migrations")
    ts.delete("sessions")
    ts.each do |t|
      begin
        # Récupère la liste des champs pour le model en cours
        tablefields = eval(t.camelize.singularize + '.column_names')
      rescue
        # On a affaire à une table de jointure
        puts "Table de jointure : #{t}"
      end
    end