Ok I have been trying to get started with Ruby on Rails and I want to
tie it together with a mysql database. I have been using the
examples in teh Agile Web Developkent with Rails, which has you setup
the database.yml file and run rake db:migrate to make sure you can
connect.
Well this all works great.
Next you create a model using script/generate model Account
Once this is created if you run rake db:migrate it will fail. Giving
you an unitialized constant CreateAccount error.
After doing some research online it appears the the file that is
generated is named wrong and that is much exactly match the name of
the class definition inside the migration file.
The generated file is 001_create_accounts.rb
/************ Migration File 001_create_accounts.rb
class CreateAccounts < ActiveRecord::Migration
def self.up
create_table :accounts do |t|
end
end
def self.down
drop_table :accounts
end
end
/*************************
I renamed the file to 001_CreateAccounts.rb, however now I get this :
vincent-cordaros-computer:~/Development/WorkSpace/rails/mymeetingstone
Storm$ rake db:migrate -- trace
(in /Users/Storm/Development/WorkSpace/rails/mymeetingstone)
Ok I have been trying to get started with Ruby on Rails and I want to
tie it together with a mysql database. I have been using the
examples in teh Agile Web Developkent with Rails, which has you setup
the database.yml file and run rake db:migrate to make sure you can
connect.
Well this all works great.
Next you create a model using script/generate model Account
Once this is created if you run rake db:migrate it will fail. Giving
you an unitialized constant CreateAccount error.
After doing some research online it appears the the file that is
generated is named wrong and that is much exactly match the name of
the class definition inside the migration file.
The generated file is 001_create_accounts.rb
/************ Migration File 001_create_accounts.rb
class CreateAccounts < ActiveRecord::Migration
def self.up
create_table :accounts do |t|
end
end
def self.down
drop_table :accounts
end
end
/*************************
The generated filename is correct, and it looks right to me. My first
suspicion was that you were migrating an empty table, but I just tried
and that works for me. The error you're getting doesn't really suggest
a DB problem to me, it suggests some other problem with your rails
setup. How did you install Rails? following the instructions at
rubyonrails.org? or are you using Instant Rails? Or if you're on linux,
did you use a package manager?
Once you migrate the db(rake db:migrate), you can't rename the
migration or add anything to it. You have to generate a new migration,
script/generate model Accounts, then db:migrate and it should work.
Once you migrate the db(rake db:migrate), you can't rename the
migration or add anything to it. You have to generate a new migration,
script/generate model Accounts, then db:migrate and it should work.
As I understand, he said it "failed" the first time, with an
Uninitialized Constant error. The problem isn't trying to rename it
after running it. The problem is trying to get it to run successfully
the first time.