如何修复数据迁移中的拼写错误?

29 浏览
0 Comments

如何修复数据迁移中的拼写错误?

我正在进行Michael Hartl的Ruby on Rails教程,在第11章的最后遇到了这个问题。

我进行了迁移,向我的数据模型中添加了activation_digestactivatedactivated_at列。

如你所见,我在命令中写成了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

我可以通过编辑迁移文件来简单修复这个错误吗?还是应该在命令行重新运行迁移?有更好的方法吗?

0
0 Comments

数据迁移中出现的问题可能是由于错误的数据类型导致的。如果在数据迁移之前发现了拼写错误,可以编辑迁移文件来修正它。另外,在运行迁移之前,应该确认迁移是否成功运行。如果迁移文件中存在无效的数据类型:datatime,迁移应该无法运行,并且不需要回滚迁移。回滚会撤销最后一次成功的迁移,我不认为这是你想要的结果。你可以尝试编辑迁移文件并重新运行迁移。

0
0 Comments

数据迁移中出现拼写错误的问题应该是由于使用了错误的命令导致的。解决方法是使用正确的命令进行回滚,然后修正拼写错误并重新运行迁移命令。

在早期版本中,可以使用rake db:rollback命令进行回滚,然后使用rake db:migrate命令重新运行迁移。然而,在较新的版本中,应该使用rails db:rollbackrails db:migrate命令。根据这个答案,实际上rails db:migrate命令被委托给了rake db:migrate命令。所以,为什么rake db:migrate命令是"基本正确"而不是"正确"呢?

根据sitepoint.com/…的解释,Rails 5 中的所有rake命令现在都在rails命令下(例如,rake db:migrate变成了rails db:migrate)。虽然这并不是强制性的,但由于这种区分令人困惑且似乎是不必要的,现在统一使用rails命令。

根据我理解(可能并不正确),似乎Rails实际上是通过Rake Proxy来封装rake任务。所以,我认为说所有的rake命令现在都"存在于"rails中有点误导人。rake任务依然存在于它们一直存在的地方。我理解这样做的目的是为了减少困惑(也许并非如此,我不确定)。我不太明白这些如何使答案变得不正确。也许不够时髦吧...

总之,通过使用正确的命令进行回滚和重新运行迁移,可以修复数据迁移中的拼写错误。希望这些帮助对你有所帮助。

0