rails模型属性类型不会被删除

时间:2011-11-13 23:13:26

标签: ruby-on-rails ruby database model rake

我有一个模型“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

如何将其实际更改为文字?

感谢。

1 个答案:

答案 0 :(得分:1)

问题在于"销毁模型"删除了您的迁移脚本。因此回滚不会回滚原始模型,因为没有用于回滚的迁移脚本。当你运行rake db:rollback时,你并没有真正看到drop_table(:lists),是吗?你应该没有因为想要改变模型而调用destroy模型。

你应该做的是: 1. rake db:rollback 2.更改迁移脚本 3. rake db:migrate

问题是现在你的数据库仍然有旧表。因此,您需要从数据库中手动删除表并再次运行rake db:migrate。这应该可以解决你的问题。