0

这不是一个重复的问题——我已经运行了rake db:test:prepare.

Hartl 关于添加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:migrate,然后rake 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:migraterake db:test:prepare无济于事。

我曾尝试使用 回滚数据库rake db:rollback,但出现此错误:

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

我认为这突出了我发现的问题。

我认为我需要做的是回滚或删除此数据库文件并重做并将其remember_token放入users表中。

非常感谢任何帮助。

4

1 回答 1

0

有时迁移会“不同步”,尝试做rake:db:reset

如果这不能解决问题,请查看控制台rails c

try User.create(name: "dave" blah blah)

看看它是否创建了一个记住令牌

于 2013-03-29T12:16:15.157 回答