我有一个模型“List”,其名称为“description”,类型为string。不是一个好主意,所以我想将其更改为键入文本。但是,我无法改变它。
我做完了:
rails destroy model List
rake db:rollback
rake db:migrate
然后我重新声明模型,其中包含类型文本的描述,并执行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)
如您所见,描述仍然是字符串类型。
我查看了迁移,它是文本类型。
def change
create_table :lists do |t|
t.string :name
t.string :popularity
t.integer :vote_counter
t.text :description
t.timestamps
end
end
如何将其实际更改为文字?
感谢。
答案 0 :(得分:1)
问题在于"销毁模型"删除了您的迁移脚本。因此回滚不会回滚原始模型,因为没有用于回滚的迁移脚本。当你运行rake db:rollback时,你并没有真正看到drop_table(:lists),是吗?你应该没有因为想要改变模型而调用destroy模型。
你应该做的是: 1. rake db:rollback 2.更改迁移脚本 3. rake db:migrate
问题是现在你的数据库仍然有旧表。因此,您需要从数据库中手动删除表并再次运行rake db:migrate。这应该可以解决你的问题。