首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Rails):NoMethodError: BCrypt::Engine:Class的未定义方法成本

(Rails):NoMethodError: BCrypt::Engine:Class的未定义方法成本
EN

Stack Overflow用户
提问于 2014-02-18 20:17:58
回答 5查看 6.5K关注 0票数 13

当我学习"Ruby on Rails教程“时,我想在控制台上创建一个用户:

代码语言:javascript
复制
irb(main):001:0> User.create(name:"gsky",email:"k@q.com",
irb(main):002:1* password:"aaaaaa",password_confirmation:"aaaaaa")

然后,我得到了以下错误消息:

代码语言:javascript
复制
NoMethodError: undefined method cost' for BCrypt::Engine:Class
from D:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activemodel-4.
0.2/lib/active_model/secure_password.rb:104:inpassword='
from D:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4
.0.2/lib/active_record/attribute_assignment.rb:42:in public_send'

这是用户模型:

代码语言:javascript
复制
class User < ActiveRecord::Base

  before_save { self.email = email.downcase }

  validates :name,  presence: true, length: { maximum: 50 }

  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :email, presence: true,
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }

   has_secure_password

   validates :password, length: { minimum: 6 }

end
EN

回答 5

Stack Overflow用户

发布于 2014-02-18 21:23:22

将bcrypt-ruby添加到Gemfile中,如下所示:

代码语言:javascript
复制
     gem 'bcrypt-ruby', '3.1.2'

然后从项目根目录运行包更新,并运行包安装

票数 16
EN

Stack Overflow用户

发布于 2014-09-22 01:38:30

当我看到"Ruby On Rails教程“时,我遇到了同样的问题,我通过设置Gemfile来解决它:

代码语言:javascript
复制
gem 'bcrypt-ruby', '3.0.1' 

至:

代码语言:javascript
复制
gem 'bcrypt-ruby', '3.1.2' 

然后运行:

代码语言:javascript
复制
bundle install
票数 8
EN

Stack Overflow用户

发布于 2014-04-21 06:04:16

同样的教程/书也有同样的问题,我使用gem 'bcrypt-ruby','~> 3.0.0‘,因为捆绑包安装有问题。在通过secure_password.rb之后,问题出现在BCrypt::Engine.cost中,这个方法实际上并不存在。

我把我的gem改成了' bcrypt -ruby','~> 3.1.0‘,它安装了bcrypt3.1.7。我看到了一条关于gem被重命名的警告消息,并将其更改为gem 'bcrypt','~> 3.1.0‘(这部分不重要)。完成包安装后,我能够通过我的集成开发环境查看Bcrypt::Engine.cost的实现,并且我能够让我的用户使用rails c。

我想补充的是,如果我在测试环境中运行rails c,在test.rb中添加ActiveModel::SecurePassword.min_cost = true可以让我创建新用户,但是当我在development.rb中添加相同的行时,它不起作用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21853579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档