我正在开发一个现有的rails项目,我必须添加一个新标签。好吧,我已经编写了所有相应的模型,视图和控制器,然后更改了schema.rb文件以创建新表。
create_table "ryan_indices", :force => true do |t|
t.string "name"
end
create_table "benchmark_indices", :force => true do |t|
t.string "name"
end
这是我的部分schema.rb文件。第一张桌子就在那里。我只是想添加一个类似的新表,我为其创建了模型,视图和控制器,并在schema.rb文件中添加了那些create_table语句。但是,当我运行rake db:migrate
时,它不会创建新表。而schema.rb file goes back to previous state
我的意思是在运行rake db:migrate
命令后,我的更改消失了,并且在命令行界面显示没有任何内容。
我不知道我错过了什么。有人可以帮忙吗?
答案 0 :(得分:6)
要修改schema.rb is considered to be bad practice:
...不是为了编辑而设计的,它们只代表数据库的当前状态。
要创建新模型(以及新的db表),请调用rails模型生成器
rails generate model Product name:string
或者:对于现有模型的新字段,请generate a migration ...
rails generate migration AddNameToProducts
...编辑它,然后使用“rake db:migrate
”
这些任务在官方RailsGuides > Migrations
中得到了很好的描述