首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails:我更新了迁移文件,然后运行db:migrate,但是我的模式没有更新

Rails:我更新了迁移文件,然后运行db:migrate,但是我的模式没有更新
EN

Stack Overflow用户
提问于 2009-09-13 01:21:06
回答 5查看 37.1K关注 0票数 23

我正在尝试向我的一个表中添加一个额外的字段。

我已经在迁移文件中添加了这个字段(在db\migrate下),然后运行'rake db:migrate‘,运行起来没有问题。我的文本编辑器甚至告诉我,我的schema.db文件已经更新,需要刷新。

模式文件不包含我的新字段,并且任何从我的视图引用该字段的尝试都会失败。

我该怎么做呢?是否可以通过rails使用额外的字段更新表,而不必完全删除并重新创建数据库?

EN

回答 5

Stack Overflow用户

发布于 2009-09-13 03:28:24

在数据库中添加/更改某些内容时,应始终创建新的迁移文件。这就是迁移的目的。迁移文件应该能够进行新的更改和撤消更改。这样,如果出现问题或者您改变了主意,您可以轻松地回滚到以前的迁移。

以下链接中标有“迁移剖析”和“编写迁移”的部分可能会对您有所帮助。

http://guides.rubyonrails.org/migrations.html

票数 7
EN

Stack Overflow用户

发布于 2014-11-29 15:05:04

我做了同样的事情,我想更改一个字段名称,而不是这样:

代码语言:javascript
复制
class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
      t.string :commenter
      t.text :body

      # this line adds an integer column called `article_id`.
      t.references :article, index: true

      t.timestamps
    end
  end
end

我变了

代码语言:javascript
复制
  t.text :body

代码语言:javascript
复制
t.text :comment_body

我试着做瑞克

代码语言:javascript
复制
db:migrate

没有发生任何事情,因为它再次进入命令提示符,没有任何输出...,我查看了堆栈溢出,this引导我执行rake

代码语言:javascript
复制
db:migrate:redo

不带输出

代码语言:javascript
复制
== 20141129044056 CreateComments: reverting ===================================
-- drop_table(:comments)
   -> 0.0000s
== 20141129044056 CreateComments: reverted (0.0886s) ==========================

== 20141129044056 CreateComments: migrating ===================================
-- create_table(:comments)
   -> 0.0040s
== 20141129044056 CreateComments: migrated (0.0040s) ==========================

然后我用commenter_body而不是body来加载我的页面/控制器,它完美地加载了。

我认为这也是一个相同的解决方案。我不知道模型/DB中的底层工作是否有任何问题(我仍然是RoR的新手,实际上是我的第三天……)

票数 5
EN

Stack Overflow用户

发布于 2009-09-13 01:57:51

解决了我自己的问题..

基本上,不是编辑您运行scaffolding时生成的原始迁移文件,而是创建一个新的迁移文件来获取您想要获得的内容:

http://guides.rubyonrails.org/migrations.html#creating-a-standalone-migration

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1416600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档