class CreateBallots < ActiveRecord::Migration
def change
create_table :ballots do |t|
t.references :user
t.references :score
t.references :election
t.string :key
t.timestamps
end
add_index :ballots, :user
add_index :ballots, :score
add_index :ballots, :election
end
end
results in:
SQLite3::SQLException: table ballots has no column named user: CREATE INDEX "index_ballots_on_user" ON "ballots" ("user")/home/muhd/awesomevote/db/migrate/20130624024349_create_ballots.rb:10:in `change'
I thought t.references
was supposed to handle that for me?
You forgot to add "_id" like this:
or, if you want it indexed automatically:
More info: add_index , references
HTH
The answer above is correct, but be aware that:
t.references :user, index: true
is only available in Rails 4.0 & up.In earlier versions of Rails (3.x),
index: true
will fail silently, leaving you without an index on that table. For Rails 3.2.x & down, use the older syntax:add_index :ballots, :user_id
Or in full using your example: