私はadd_column:users、:confirmed_at(confirmation_at):datetimeという名前を付けました。そこで、私は適切なフィールド名に変更しました:(confirmed_at)Rails db migrate 1回目の移行後にフィールド名を変更するとエラーが中止されました
次に、コマンドラインでrake db:rollbackと入力しました。
class AddConfirmableToDevise < ActiveRecord::Migration
def up
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
add_index :users, :confirmation_token, unique: true
end
def down
remove_column :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
end
end
エラー移行後:
tzurch:~/workspace (gravitar) $ rake db:migrate:redo
#the error that came up below
_________________________________________________
== 20160902201448 AddFullnameToUser: reverting ================================
-- remove_column(:users, :fullname, :string)
-> 0.0207s
== 20160902201448 AddFullnameToUser: reverted (0.0284s) =======================
== 20160902201448 AddFullnameToUser: migrating ================================
-- add_column(:users, :fullname, :string)
-> 0.0008s
== 20160902201448 AddFullnameToUser: migrated (0.0009s) =======================
== 20160913221959 AddConfirmableToDevise: migrating ===========================
-- add_column(:users, :confirmation_token, :string)
-> 0.0009s
-- add_column(:users, :confirmed_at, :datetime)
-> 0.0005s
-- add_column(:users, :confirmation_sent_at, :datetime)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: duplicate column name: confirmation_sent_at: ALTER TABLE "users" ADD "confirmation_sent_at" datetime:
I defを完全に削除してからrake db:migrate:redoを実行すると、同じエラーが発生しました。エラーが示唆しているように、dbに重複フィールドがあるようです。もしそうなら、私はどのように見つけて削除するのですか?私はRubyの粗悪なことをしています....:ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:重複する列名:confirmation_sent_at:ALTER TABLE "users" ADD "confirmation_sent_at" datetime – Zurch
あなたは 'rake db:migrate:下のVERSION = migration_version_no'を実行してからrake db:migrate:up VERSION = migration_version_no'もう一度 –
私は戻って適切なフィールド名 – Zurch