测试抱怨NoMethodError:nil:NilClass的未定义方法“名称”

贝佐恩

刚刚添加bcrypt了一个password_digest列到数据库。现在,我收到此错误。就是说它不识别名字,这个测试通过了。现在失败了。所有其他测试都通过了(password_digest奇怪的其中之一)。我正在使用Rails附带的测试框架。

  def test_can_create_profiles
    user = create_user('[email protected]', 'hassan') #creates a profile with randomized password
    assert_equal "hassan", User.find_by_email('[email protected]').name
  end 

捆绑执行佣金测试

  1) Error:
UserTest#test_can_create_profiles:
NoMethodError: undefined method `name' for nil:NilClass
    test/models/user_test.rb:9:in `test_can_create_profiles'



class User < ActiveRecord::Base
  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  before_save {self.email = email.downcase}  
  validates :name, presence: true, length: { maximum: 20 }
  validates :email, :presence => true,
    :format => { :with => email_regex },
    :uniqueness => { :case_sensitive =>
      false }
  has_secure_password
end

如果有任何我缺少的信息,请告诉我。


def create_user(email, name)
  user = User.new(name: name, email: email)
  user.password_digest = (0...8).map { (65 + rand(26)).chr }.join
  user.save
  user
end

GHGH

x = User.new
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
irb(main):002:0> x.name ='lol'
=> "lol"
irb(main):005:0> x.email = '[email protected]'
=> "[email protected]"

irb(main):007:0> x.password_digest = 'lol'
=> "lol"
irb(main):008:0> x.save
   (0.1ms)  begin transaction
  User Exists (0.3ms)  SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
   (0.1ms)  rollback transaction
=> false

好的,问题出在这里!

irb(main):010:0> raise x.errors.inspect
RuntimeError: #<ActiveModel::Errors:0x007f6fae5b3bf8 @base=#<User id: nil, name: "lol", email: "[email protected]", created_at: nil, updated_at: nil, password_digest: "lol">, @messages={:password=>["can't be blank"]}>

irb(main):013:0> raise x.password= 'hello'
RuntimeError: hello
    from (irb):13
    from /home/user/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/commands/console.rb:90:in `start'
    from /home/user/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/commands/console.rb:9:in `start'
    from /home/user/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.1/lib/rails/commands.rb:62:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'
irb(main):014:0> raise x.errors.inspect
RuntimeError: #<ActiveModel::Errors:0x007f6fae5b3bf8 @base=#<User id: nil, name: "lol", email: "[email protected]", created_at: nil, updated_at: nil, password_digest: "$2a$10$CMPQdQSLKQTS5r0G2a1oheDhblzxcp65KxStZbKKAHmy...">, @messages={:password=>["can't be blank"]}>
    from (irb):14
    from /home/user/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/railties-4.0.1

::c

为什么会这样呢?

编辑:bcrypt要求输入password和password_confirmation字段。

那就是造成麻烦以及测试失败的原因。>。<

乔斯

假设您的create_user方法成功保存了一个User对象,则问题很简单:

您正在保存电子邮件地址[email protected]并尝试检索[email protected]

如果仍不能解决问题,请发布您的create_user方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

奇怪的NoMethodError(nil:NilClass的未定义方法“名称”)

来自分类Dev

nil:NilClass <NoMethodError>的未定义方法'>'

来自分类Dev

NoMethodError:未定义的方法[[] ='for nil:NilClass

来自分类Dev

nil:NilClass的未定义方法“ +”(NoMethodError)

来自分类Dev

nil:NilClass <NoMethodError>的未定义方法'[]'

来自分类Dev

NoMethodError:nil:NilClass的未定义方法“ +”

来自分类Dev

nil:NilClass的未定义方法“名称”

来自分类Dev

瑞克测试:NoMethodError:nil:NilClass的未定义方法“ each”

来自分类Dev

“ NoMethodError:未定义的方法admin?for nil:NilClass“-测试错误

来自分类Dev

/ group_messages / 64上的NoMethodError为nil:NilClass的未定义方法“名称”

来自分类Dev

Chefs#show中的NoMethodError ... nil:NilClass的未定义方法“名称”

来自分类Dev

NoMethodError未定义的方法`',用于nil:NilClass

来自分类Dev

Rails 4:NoMethodError:nil:NilClass的未定义方法“ each”

来自分类Dev

NoMethodError未定义的方法`name'为nil:NilClass

来自分类Dev

面向nil:NilClass的Ruby未定义方法“ []”(NoMethodError)

来自分类Dev

数组的nil:NilClass(NoMethodError)的未定义方法`split'

来自分类Dev

NoMethodError-nil:NilClass的未定义方法

来自分类Dev

#<NoMethodError:未定义的方法'any?' 对于nil:NilClass>

来自分类Dev

Rails DateTime-NoMethodError(nil:NilClass的未定义方法“ []”)

来自分类Dev

NoMethodError未定义的方法`name'为nil:NilClass

来自分类Dev

Heroku + Rails:NoMethodError(nil:NilClass的未定义方法“ /”)

来自分类Dev

事件中的NoMethodError nil:NilClass的未定义方法“名字”

来自分类Dev

NoMethodError未定义的方法`',用于nil:NilClass

来自分类Dev

NoMethodError(nil:NilClass的未定义方法“ posts”)

来自分类Dev

NoMethodError未定义的方法'[] ='为nil:NilClass

来自分类Dev

NoMethodError:nil:NilClass的未定义方法“用户”

来自分类Dev

NoMethodError发生未定义的nil:NilClass方法

来自分类Dev

未定义的方法“ +”,用于nil:NilClass(NoMethodError)-Ruby

来自分类Dev

#<NoMethodError:未定义的方法'any?' 对于nil:NilClass>

Related 相关文章

  1. 1

    奇怪的NoMethodError(nil:NilClass的未定义方法“名称”)

  2. 2

    nil:NilClass <NoMethodError>的未定义方法'>'

  3. 3

    NoMethodError:未定义的方法[[] ='for nil:NilClass

  4. 4

    nil:NilClass的未定义方法“ +”(NoMethodError)

  5. 5

    nil:NilClass <NoMethodError>的未定义方法'[]'

  6. 6

    NoMethodError:nil:NilClass的未定义方法“ +”

  7. 7

    nil:NilClass的未定义方法“名称”

  8. 8

    瑞克测试:NoMethodError:nil:NilClass的未定义方法“ each”

  9. 9

    “ NoMethodError:未定义的方法admin?for nil:NilClass“-测试错误

  10. 10

    / group_messages / 64上的NoMethodError为nil:NilClass的未定义方法“名称”

  11. 11

    Chefs#show中的NoMethodError ... nil:NilClass的未定义方法“名称”

  12. 12

    NoMethodError未定义的方法`',用于nil:NilClass

  13. 13

    Rails 4:NoMethodError:nil:NilClass的未定义方法“ each”

  14. 14

    NoMethodError未定义的方法`name'为nil:NilClass

  15. 15

    面向nil:NilClass的Ruby未定义方法“ []”(NoMethodError)

  16. 16

    数组的nil:NilClass(NoMethodError)的未定义方法`split'

  17. 17

    NoMethodError-nil:NilClass的未定义方法

  18. 18

    #<NoMethodError:未定义的方法'any?' 对于nil:NilClass>

  19. 19

    Rails DateTime-NoMethodError(nil:NilClass的未定义方法“ []”)

  20. 20

    NoMethodError未定义的方法`name'为nil:NilClass

  21. 21

    Heroku + Rails:NoMethodError(nil:NilClass的未定义方法“ /”)

  22. 22

    事件中的NoMethodError nil:NilClass的未定义方法“名字”

  23. 23

    NoMethodError未定义的方法`',用于nil:NilClass

  24. 24

    NoMethodError(nil:NilClass的未定义方法“ posts”)

  25. 25

    NoMethodError未定义的方法'[] ='为nil:NilClass

  26. 26

    NoMethodError:nil:NilClass的未定义方法“用户”

  27. 27

    NoMethodError发生未定义的nil:NilClass方法

  28. 28

    未定义的方法“ +”,用于nil:NilClass(NoMethodError)-Ruby

  29. 29

    #<NoMethodError:未定义的方法'any?' 对于nil:NilClass>

热门标签

归档