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

问题描述 投票:0回答:1

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

本书第39页的最后一行是

此时一切都应该是绿色的

但是,当我运行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'

应用程序/模型/ user.rb

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

分贝/迁移/ 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上找到。

我真的很感激任何帮助。

ruby-on-rails devise cucumber
1个回答
1
投票

只需运行rake db:test:准备在测试环境中执行上次迁移

© www.soinside.com 2019 - 2024. All rights reserved.