2013-02-12 3 views
0

Что происходит в мире? Мои тесты не проходят, и я был очень осторожен во всем этом учебнике (на этот раз). Скажите, пожалуйста, почему появляется ошибка remember_token.Hartl Chap. 8.2.1 неудачный тест

здесь моя ошибка: Неудачи:

1) User 
    Failure/Error: it { should respond_to(:remember_token) } 
     expected #<User id: nil, name: "Example User", email: "[email protected]", created_at: nil, updated_at: nil, password_digest:  "$2a$04$HUTzfhPB9eOgNaBIwQZn/.BpGt4h/v9wgLlo.UoMoh8Q..."> to respond to :remember_token 
    # ./spec/models/user_spec.rb:28:in `block (2 levels) in <top (required)>' 

Finished in 0.19682 seconds 
22 examples, 1 failure 

Failed examples: 

rspec ./spec/models/user_spec.rb:28 # User 

вот мой код:

дб/мигрирует/[метка] _add_remember_token_to_users.rb

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

спецификации/модели/user_spec .rb требуют «spec_helper»

describe User do 

    before do 
    @user = User.new(name: "Example User", email: "[email protected]", 
        password: "foobar", password_confirmation: "foobar") 
    end 

    subject { @user } 

    it { should respond_to(:name) } 
    it { should respond_to(:email) } 
    it { should respond_to(:password_digest) } 
    it { should respond_to(:password) } 
    it { should respond_to(:password_confirmation) } 
    it { should respond_to(:remember_token) } 
    it { should respond_to(:authenticate) } 

    it { should be_valid } 
    it { should respond_to(:authenticate) } 
. 
. 
. 
+0

Вы забыли запустить 'rake db: migrate'? –

+0

да я сделал, я сделал все ... ну, очевидно, не ... –

+0

Я не уверен, что вы имеете в виду ... вы все еще получаете ошибку? –

ответ

0

Я предполагаю, что вам нужно запустить rake db:test:prepare. Удачи!

0

Я столкнулся с очень похожим вопросом, и мы накрыли его here.

Подводя итог, что-то ушло с базой данных, поэтому я сделал удаление таблиц, а затем перезапустил rake db:migrate и rake db:test:prepare.

Для удаления таблицы:

  • Открыть SQLite Database Browser (Hartl рекомендуется браузер базы данных из ранее в этой книге).
  • Из SQLite Database Browser откройте sample_app/db/development.sqlite.
  • Удалить (из SQLite Database Browser), удалить таблицу schema_migrations.
  • Мне также пришлось удалить schema.rb, который я сделал с терминала.

Я пробовал эти шаги, а затем бежал rake db:migrate, но столкнулся с другой ошибкой. Затем я удалил всю таблицу users (в SQLite DB Browser), а затем повторно запустил rake db:migrate и получил все, чтобы пройти.

Резервное копирование перед тем, как вы это сделаете.

0

У меня была и эта проблема сегодня. Мне пришлось удалить файл [timestamp] _add_remember_token_to_users.rb вручную. , а затем запустить bundle exec rake db: migrate bundle exec rake db: test: подготовить

Смежные вопросы