Hi guys,
I'm having problems when creating basic web applications using rails
2.2 and mySQL databases.
If I create the following table in a database named moviecritc_development:
CREATE TABLE movies (
id INT NOT NULL AUTO_INCREMENT PRIMARY_KEY,
name VARCHAR(30) NOT NULL );
and then run the following ruby commands:
rails -d mysql moviecritic (creates all the necessary files without any issue.)
I then modify the config/database.yml to include the root password to
my database and run then ruby the following ruby command:
ruby script/generate scaffold Movie (creates usual files without error).
If i now view the db/migrate.create_movies.rb i see the following:
class CreateMovies < ActiveRecord::Migration
def self.up
create_table :movies do |t|
t.timestamps
end
end
def self.down
drop_table :movies
end
end
It doesn't make a reference to the name column i created! This is
reflected when i navigate to localhost:3000/movies/new i only see a
Back link and a Create Button, i don't see a NAME FIELD INPUT.
Has anyone any ideas why this is happening?
Thanks in advance,
Stephen
Hi guys,
I'm having problems when creating basic web applications using rails
2.2 and mySQL databases.
If I create the following table in a database named moviecritc_development:
CREATE TABLE movies (
id INT NOT NULL AUTO_INCREMENT PRIMARY_KEY,
name VARCHAR(30) NOT NULL );
and then run the following ruby commands:
rails -d mysql moviecritic (creates all the necessary files without any issue.)
I then modify the config/database.yml to include the root password to
my database and run then ruby the following ruby command:
ruby script/generate scaffold Movie (creates usual files without error).
If i now view the db/migrate.create_movies.rb i see the following:
class CreateMovies < ActiveRecord::Migration
def self.up
create_table :movies do |t|
t\.timestamps
end
end
def self.down
drop_table :movies
end
end
It doesn't make a reference to the name column i created! This is
You've got things back to front. the migration generator does not look
at an existing table. It's expecting that it will be creating a new
table.
The scaffolding stuff used to introspect the database but that died a
while back
These days what you should do is
- create your rails app
- create the database
ruby script/generate scaffold Movie name:string
This will create the migration, views and controller. The migration
will create a table with a name column called string and the views
will show that field.
then run
rake db:migrate
to run the migration (ie actually create the table).
I think that's crap. The scaffold should create the table if it does
not exist but if the table already exists then inspect the table and
generate the appropriate stuff. What a pain in the ass.