0

これは二重質問ではありませrake db:test:prepare

追加に関する Hartl の Rails チュートリアルremember_token

authentication_pages_spec.rb を実行するとエラーが発生します:

1) User 
     Failure/Error: it { should respond_to(:remember_token) }
       expected #<User id: nil, name: "Example User", email: "user@example.com", created_at: nil, updated_at: nil, password_digest: "$2a$04$eszlV1FYN2HahpYn1X/NyOTWYbzKjfLZCv7Vc2I0Wb3p..."> to respond to :remember_token
     # ./spec/models/user_spec.rb:18:in `block (2 levels) in <top (required)>'

私の間違い:

TIMESTAMP_add_remember_token_to_users.rb を生成し、次のコードを追加しました。

class AddRememberTokenToUsers < ActiveRecord::Migration
    def change
        add_column :user, :remember_token, :string  
        add_index :user, :remember_token
    end
end

私は走っrake db:migraterake db:test:prepare。上記のコードは両方の行にある:userはずであると判断しました。:usersコードは次のようになります。

class AddRememberTokenToUsers < ActiveRecord::Migration
    def change
        add_column :users, :remember_token, :string 
        add_index :users, :remember_token
    end
end

テストはまだ失敗しています。これらの編集を行った後、実行rake db:migrateしましたがrake db:test:prepare、役に立ちませんでした。

を使用してデータベースをロールバックしようとしましrake db:rollbackたが、次のエラーが発生します。

Index name 'index_users_on_remember_token' on table 'users' does not exist

これは、私が発見した問題を強調していると思います。

私がする必要があるのは、このデータベースファイルをロールバックまたは削除し、やり直しremember_tokenusersテーブルに入れることだと思います。

どんな助けでも大歓迎です。

4

1 に答える 1

0

移行が「非同期」になることがあります。rake:db:reset

これで解決しない場合は、コンソールを見てくださいrails c

User.create(name: "dave" blah blah) を試す

記憶トークンが作成されるかどうかを確認する

于 2013-03-29T12:16:15.157 に答える