我收到一个错误:
SQLite3::SQLException: no such column: ideas.list_id:
SELECT "ideas".* FROM "ideas"
WHERE "ideas"."list_id" = 2
但是我加了
t.integer :list_id
到我的数据库迁移文件:
class CreateIdeas < ActiveRecord::Migration
def change
create_table :ideas do |t|
t.string :name
t.text :description
t.string :picture
t.timestamps
end
add_foreign_key :ideas, :lists
end
end
这给了我这个:
class CreateIdeas < ActiveRecord::Migration
def change
create_table :ideas do |t|
t.string :name
t.text :description
t.string :picture
t.integer :list_id
t.timestamps
end
add_foreign_key :ideas, :lists
end
end
然后我输入
rake db:migrate
知道为什么我会收到一条错误消息说没有专栏吗?我对 RoR 还是陌生的。我必须以其他方式添加一列吗?
谢谢
最佳答案
正如 Speransky 所建议的,您永远不应该修改旧的迁移文件。相反,您应该创建一个新的迁移来添加所需的列。例如,在这种情况下,您将在您的应用中运行以下命令来创建新的迁移:
rails generate migration AddListIdColumnToIdeas list_id:integer
Rails 会自动生成迁移文件,唯一要做的就是运行 rake db:migrate
。
如果你坚持修改旧的迁移文件,你可以像以前一样添加列并运行以下命令:
rake db:drop
rake db:create
rake db:migrate
这将破坏您当前的数据库,创建一个新数据库并运行所有迁移(其中将包括您的新列)。
关于ruby-on-rails - ruby rails : adding columns to existing database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259687/