Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails模型属性类型不为';不要被移除_Ruby On Rails_Ruby_Database_Model_Rake - Fatal编程技术网

Ruby on rails rails模型属性类型不为';不要被移除

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

我有一个模型“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, 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,然后迁移了。