私はばかです... 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
に type の列があります。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