用户的未定义方法 'current_sign_in_ip' (NoMethodError)

undefined method 'current_sign_in_ip' for User (NoMethodError)

有兴趣了解 BDD,我正在关注 Setting up a BDD stack on a rails 5 application 中提到的免费 Rails 测试手册,并且几乎完成了第 5 章 引导用户身份验证系统.

本书第 39 页的最后一行是

Everything should be green at this point

然而,当我 运行 bundle exec cucumber 我有两个失败的场景(用户登录和用户注销)。黄瓜输出的摘录附在下面:

 When I fill in the login form #  
 features/step_definitions/authentication_steps.rb:29  
 undefined method `current_sign_in_ip' for #<User:0x0055a41ac1eeb8> (NoMethodError)

./features/step_definitions/authentication_steps.rb:32:in `"I fill in the login form"'
          features/authentication.feature:15:in `When I fill in the login form'

app/models/user.rb

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
                 :confirmable
end

db/migrate/20181221105428_add_trackable_to_devise.rb

class AddTrackableToDevise < ActiveRecord::Migration[5.2]
  def change
        add_column :users, :sign_in_count, :integer, default:0, null: false
        add_column :users, :current_sign_in_at, :datetime
        add_column :users, :last_sign_in_at, :datetime
        add_column :users, :current_sign_in_ip, :inet
        add_column :users, :last_sign_in_ip, :inet
  end
end

完整代码和 pdf 书籍可在 github repo 上获得。

非常感谢任何帮助。

只需 运行 rake db:test:prepare 在测试环境中执行最后一次迁移