我是个白痴……在 Rails 中搞砸了迁移:
认为迁移会像模型生成器一样工作(使用references:modelname
)我做了以下工作:
$ rails g migration add_event_to_photos references:event
这创造了迁移
class AddEventToPhotos < ActiveRecord::Migration
def change
add_column :photos, :references, :event
end
end
现在我的开发数据库(SQLite3)在表中有一个类型references
列。event
photos
我的 schema.rb 中间有一行说:
# Could not dump table "photos" because of following StandardError
# Unknown type 'event' for column 'references'
rake db:rollback
对此无能为力:
$ rake db:rollback
== AddEventToPhotos: reverting ===============================================
-- remove_column("photos", :references)
rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `to_sym' for nil:NilClass
那么,如何回滚和维护我在数据库中的开发数据呢?如果这是我唯一的选择,我什至会很乐意破坏照片表……但不想重建整个东西。该怎么办?
顺便说一句-对于任何阅读本文的人都会犯同样的愚蠢错误……不要!使用正确的迁移生成器:
$ rails g migration add_event_to_photos event_id:integer