【问题标题】:undefined method 'current_sign_in_ip' for User (NoMethodError)用户的未定义方法“current_sign_in_ip”(NoMethodError)
【发布时间】:2018-12-21 21:33:51
【问题描述】:

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

本书第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'

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 在测试环境中运行迁移?
  • 不,我没有,感谢您的帮助,它解决了这个特定问题。

标签: ruby-on-rails devise cucumber


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多