Connect Rails to an existant database

Hello,

I've been using rails for a few days and I know how to create a new application and new database.

My problem is that I now have to connect Rails to an existant database, and I don't know how to do ...

Can somebody help me please ?

Thanks :slight_smile:

I'm nowhere near positive, but you might want to give this a try. Go into your app's config folder and find the database.yml file. Open it up with SciTE. You should see:

development:   adapter: (mysql or something)   database: (db name)   username:   password:   host:

# Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'. # Do not set this db to the same as development or production. test:   adapter:   database:   username:   password:

production:   adapter:   database:   username:   password:

Fill in the development area with the info to the existing database. That... should be it I think.

Fill in the development area with the info to the existing database. That... should be it I think.

Yes, that's what I've done :

development:   host: 127.0.0.1   adapter: postgresql   database: RAMU_florian   username: florian   password: florian

But it needs some views rhtml pages to work... This pages are normally generated by script/generate scaffold, but when I try to generate a scaffold, the table already exists on the database so there's an error...

Connecting to an existing database is failrly straight forward. Open the database.yml file and fill in your database parameters in the development section.

adapter should be 'mysql' or 'postgresql' etc (depending on the database you use) database should be the name of the database you want to connect to. also give the username and password.

you are done with the connection part.

To actually use the data fro existing tables, you can create a model and use the "set_table_name"

Eg:

class Foo < ActiveRecord::Base set_table_name "project" end

I've followed what you've said, but it doesn't work :s When I try to go on http://127.0.0.1:3000/correspondant (after having put 'set_table_name "correspondant"' in correspondant.rb), this error appears :

Unknown action No action responded to index

I think it does because 'views' RHTML pages aren't generated... No ?

not exactly. this error arises because you dont have an "index" method defined in the Correspondant controller. you need to define this method, as well as write an index.rhtml for the same, in the views/ correspondant.

not exactly. this error arises because you dont have an "index" method defined in the Correspondant controller. you need to define this method, as well as write an index.rhtml for the same, in the views/ correspondant.

So, I've copied the content of C:\Documents and Settings\Administrateur \ramu\app\controllers\correspondant_controller.rb from a previous file and did the same for index.rhtml, but it doesn't work... The error is :

Expected C:/Documents and Settings/Administrateur/ramu/app/controllers/ correspondant_controller.rb to define CorrespondantController

Whereas this file exists !

Here is its content :

class CorrespondantsController < ApplicationController   # GET /correspondants   # GET /correspondants.xml   def index     @correspondants = Correspondant.find(:all)

    respond_to do |format|       format.html # index.html.erb       format.xml { render :xml => @correspondants }     end   end

  # GET /correspondants/1   # GET /correspondants/1.xml   def show     @correspondant = Correspondant.find(params[:id])

    respond_to do |format|       format.html # show.html.erb       format.xml { render :xml => @correspondant }     end   end

  # GET /correspondants/new   # GET /correspondants/new.xml   def new     @correspondant = Correspondant.new

    respond_to do |format|       format.html # new.html.erb       format.xml { render :xml => @correspondant }     end   end

  # GET /correspondants/1/edit   def edit     @correspondant = Correspondant.find(params[:id])   end

  # POST /correspondants   # POST /correspondants.xml   def create     @correspondant = Correspondant.new(params[:correspondant])

    respond_to do |format|       if @correspondant.save         flash[:notice] = 'Correspondant was successfully created.'         format.html { redirect_to(@correspondant) }         format.xml { render :xml => @correspondant, :status => :created, :location => @correspondant }       else         format.html { render :action => "new" }         format.xml { render :xml => @correspondant.errors, :status => :unprocessable_entity }       end     end   end

  # PUT /correspondants/1   # PUT /correspondants/1.xml   def update     @correspondant = Correspondant.find(params[:id])

    respond_to do |format|       if @correspondant.update_attributes(params[:correspondant])         flash[:notice] = 'Correspondant was successfully updated.'         format.html { redirect_to(@correspondant) }         format.xml { head :ok }       else         format.html { render :action => "edit" }         format.xml { render :xml => @correspondant.errors, :status => :unprocessable_entity }       end     end   end

  # DELETE /correspondants/1   # DELETE /correspondants/1.xml   def destroy     @correspondant = Correspondant.find(params[:id])     @correspondant.destroy

    respond_to do |format|       format.html { redirect_to(correspondants_url) }       format.xml { head :ok }     end   end end

I'm becoming crazy =(

your class needs to be named CorrespondantController and not Correspondant's'Controller

your class needs to be named CorrespondantController and not Correspondant's'Controller

This means I have to modify what files ?