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 ?