Ruby on rails rails模型属性类型不为';不要被移除
我有一个模型“List”,其属性为string类型的“description”。这不是个好主意,所以我想把它改成文本。然而,我不能改变它 我已经做到了:Ruby on rails rails模型属性类型不为';不要被移除,ruby-on-rails,ruby,database,model,rake,Ruby On Rails,Ruby,Database,Model,Rake,我有一个模型“List”,其属性为string类型的“description”。这不是个好主意,所以我想把它改成文本。然而,我不能改变它 我已经做到了: rails destroy model List rake db:rollback rake db:migrate 然后,我用类型text的描述重新声明模型,并执行rake db:migrate 那么我会: rails c ruby-1.9.2-p290 :002 > List => List(id: integer, na
rails destroy model List
rake db:rollback
rake db:migrate
然后,我用类型text的描述重新声明模型,并执行rake db:migrate
那么我会:
rails c
ruby-1.9.2-p290 :002 > List
=> List(id: integer, name: string, popularity: string, vote_counter: integer, description: string, created_at: datetime, updated_at: datetime)
如您所见,描述仍然是string类型
我查看迁移,它是文本类型
def change
create_table :lists do |t|
t.string :name
t.string :popularity
t.integer :vote_counter
t.text :description
t.timestamps
end
end
我如何将其实际更改为文本
谢谢。问题是“销毁模型”删除了您的迁移脚本。因此,回滚不会回滚原始模型,因为没有用于回滚的迁移脚本。当您运行rake db:rollback时,并没有真正看到drop_表(:list),是吗?您不应该仅仅因为要更改模型就调用destroy model
你应该做的是:
1.rake-db:回滚
2.更改迁移脚本
3.rake数据库:迁移
问题是现在您的数据库仍然有旧表。因此,您需要手动从数据库中删除表,然后再次运行rake db:migrate。这会解决你的问题。谢谢。我只是做了rake db:drop,然后迁移了。