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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户的未定义方法'current_sign_in_ip'(NoMethodError)相关的知识,希望对你有一定的参考价值。

有兴趣了解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上找到。

我真的很感激任何帮助。

答案

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

以上是关于用户的未定义方法'current_sign_in_ip'(NoMethodError)的主要内容,如果未能解决你的问题,请参考以下文章

部署到Heroku:NoMethodError:nil:NilClass的未定义方法'+'

NoMethodError(JsonWebToken的未定义方法`encode':模块):

安装的未定义方法`devise'(调用'Install.connection'建立连接):Class

ActiveRecord NoMethodError:nil的未定义方法`association':NilClass

React Native-iOS-无效的Podfile文件:nil:NilClass的未定义方法'[]'

nil的未定义方法`router_name':NilClass