Ruby on rails 如何修复数据迁移中的输入错误?

Ruby on rails 如何修复数据迁移中的输入错误?,ruby-on-rails,Ruby On Rails,我是RubyonRails新手。感谢您的帮助。我正在做MichaelHartlRubyonRails教程,在第11章末尾遇到了这个问题 问题是:我做了一次迁移,将activation_digest、activated和activated_at列添加到我的数据模型中 $ rails generate migration add_activation_to_users \ > activation_digest:string activated:boolean activated_at:dat

我是RubyonRails新手。感谢您的帮助。我正在做MichaelHartlRubyonRails教程,在第11章末尾遇到了这个问题

问题是:我做了一次迁移,将activation_digest、activated和activated_at列添加到我的数据模型中

$ rails generate migration add_activation_to_users \
> activation_digest:string activated:boolean activated_at:datatime
如您所见,我编写了
datatime
而不是
datetime
。 现在,我的迁移文件如下所示:

class AddActivationToUsers < ActiveRecord::Migration[5.1]
  def change
    add_column :users, :activation_digest, :string
    add_column :users, :activated, :boolean, default: false
    add_column :users, :activated_at, :datatime
  end
end
class AddActivationUsers

我的问题是,我可以通过编辑迁移文件来修复这个错误吗?还是应该在命令行重新运行迁移?有更好的方法吗?非常感谢阅读我的问题的所有人:)

您可以在运行迁移之前编辑迁移文件

rake db:rollback 
将回滚迁移,然后您可以修复错误并运行

rake db:migrate 

再次重新运行迁移。

您已经运行迁移了吗?我已经运行了迁移,应该在帖子中指定,抱歉!您是否运行了迁移(
rake db:migrate
)?它成功完成了吗?我做到了,我没有任何理由认为它没有成功完成,但有可能我看得不够近。基本正确,但如果他们使用的是更高版本:它是:
rails db:rollback
rails db:migrate
。更正说他们使用的命令是最好的。真的吗?我仍然使用
rake
根据这一点,看起来
railsdb:migrate
实际上被委托给
rake db:migrate
。那么,为什么rake db:migrate“基本正确”而不是“正确”?“Rails 5的另一个很酷的特性是所有
rake
命令现在都存在于
Rails
(例如,
rake db:migrate
变成了
Rails db:migrate
)。”这还不是强制性的(或者曾经?),但因为这很混乱,而且显然是一个不必要的区别。如果我没有读错的话(我可能不是这样),看起来rails本质上是在包装rake任务(通过
rake代理
)。因此,在我看来,说所有rake命令现在都“存在”在rails中是有点误导的。rake任务生活在它们一直生活的地方。我明白这是为了让事情不那么混乱(我不知道这可能是真的,也可能不是真的)。我想我不明白这怎么会让答案不那么正确。也许不那么时髦……你确定迁移成功运行了吗?如果数据类型无效
:datatime
,它就不应该运行,你也不应该回滚迁移。回滚会撤消上一次成功的迁移,我怀疑这是什么您应该能够编辑迁移文件并再次尝试运行迁移。
rake db:rollback