0

这世界到底是怎么回事??我的测试没有通过,我在整个教程中都非常小心(这次)。请告诉我为什么会弹出 remember_token 错误。

这是我的错误:失败:

  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$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 

这是我的代码:

db/migrate/[时间戳]_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: "user@example.com", 
                     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) }
.
.
.  
4

3 回答 3

0

I had this problem today also. I had to remove the [timestamp]_add_remember_token_to_users.rb file manually. and then run bundle exec rake db:migrate bundle exec rake db:test:prepare

于 2013-07-03T00:46:17.103 回答
0

我的猜测是你需要运行 rake db:test:prepare. 祝你好运!

于 2013-03-12T01:18:31.497 回答
0

我遇到了一个非常相似的问题,我们在这里介绍了它。

总而言之,数据库出了点问题,所以我所做的就是删除表,然后重新运行rake db:migrateand rake db:test:prepare

要删除表:

  • 打开 SQLite 数据库浏览器(Hartl 在本书前面推荐的数据库浏览器)。
  • 在 SQLite 数据库浏览器中,打开 sample_app/db/development.sqlite。
  • 删除(从 SQLite 数据库浏览器),删除 schema_migrations 表。
  • 我还必须从终端删除 schema.rb。

我确实尝试了这些步骤然后运行rake db:migrate,但遇到了另一个错误。然后我删除了整个users表(在 SQLite DB 浏览器中),然后重新运行rake db:migrate并让一切都通过。

在执行此操作之前备份。

于 2013-03-30T14:26:36.277 回答