如何修复数据迁移中的拼写错误?
如何修复数据迁移中的拼写错误?
我正在进行Michael Hartl的Ruby on Rails教程,在第11章的最后遇到了这个问题。
我进行了迁移,向我的数据模型中添加了activation_digest
、activated
和activated_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
我可以通过编辑迁移文件来简单修复这个错误吗?还是应该在命令行重新运行迁移?有更好的方法吗?
数据迁移中出现拼写错误的问题应该是由于使用了错误的命令导致的。解决方法是使用正确的命令进行回滚,然后修正拼写错误并重新运行迁移命令。
在早期版本中,可以使用rake db:rollback
命令进行回滚,然后使用rake db:migrate
命令重新运行迁移。然而,在较新的版本中,应该使用rails db:rollback
和rails 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任务依然存在于它们一直存在的地方。我理解这样做的目的是为了减少困惑(也许并非如此,我不确定)。我不太明白这些如何使答案变得不正确。也许不够时髦吧...
总之,通过使用正确的命令进行回滚和重新运行迁移,可以修复数据迁移中的拼写错误。希望这些帮助对你有所帮助。