首页 文章

NoMethodError:未定义的方法`digest'

提问于
浏览
3

我试着test a valid user login.但是,当我运行测试时,我是'm getting NoMethodError: undefined method `digest' . 我've looked everything over and I don' t看到为什么我甚至使用复制/粘贴教程代码来确保它不是拼写错误或我在打字时错过的其他内容 .

这是我的用户模型:

class User < ApplicationRecord
  before_save { email.downcase! }
  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
  validates :email, presence: true, length: { maximum: 255 },
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  has_secure_password
  validates :password, presence: true, length: { minimum: 6 }

  def User.digest(string)
      cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
                                                    BCrypt::Engine.cost
      BCrypt::Password.create(string, cost: cost)
  end
end

和我的夹具:

test_user:
    name: Test User
    email: testuser@example.com
    password_digest: <%= User.digest('password') %>

和我的测试:

test "login with valid information" do
  get login_path
  post login_path, params: { session: { email:    @user.email,
                                        password: 'password' } }
  assert_redirected_to @user
  follow_redirect!
  assert_template 'users/show'
  assert_select "a[href=?]", login_path, count: 0
  assert_select "a[href=?]", logout_path
  assert_select "a[href=?]", user_path(@user)
end

我很难过,所以任何建议都值得赞赏 .

堆栈跟踪:

NoMethodError: undefined method `digest' for #<User:0x000000069b8c18>

你的意思是?摘自/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.0.1/lib/active_model/attribute_methods.rb:433:in method_missing' from (irb):8 from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in start'from / usr / local / rvm / gems / ruby -2.3.0 / gems / railties-5.0.0.1 / lib / rails / commands / console_helper.rb:9:in start' from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in console'from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0 .0.1 / lib / rails / commands / commands_tasks.rb:49:in run_command!' from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in 'from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb: 293:在 require' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in 块中的require'from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in load_dependency' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in require'from / home / ubuntu / workspace / bin / rails:9:in <top (required)>' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in load'from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in block in load' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in load_dependency'来自/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in load' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/commands/rails.rb:6:in call'from / usr / local / rvm / gems /红宝石2.3.0 /宝石/ spring 1.7.2 / LIB / SPR ing / command_wrapper.rb:38:in -1450219_ block in serve'from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:161:in fork' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:161:in 来自/ usr / local / rvm / gems /的来自/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:131:in block in run' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in loop'的服务ruby-2.3.0 / gems / spring-1.7.2 / lib / spring / application.rb:125:in run' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in 'from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0 /rubygems/core_ext/kernel_require.rb:55:in require' from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require'

1 回答

相关问题