小编Rul*_*Rul的帖子

如何修复 rspec“未定义方法‘validate_presence_of’”错误

当我运行时,rspec我收到此错误:

Failures:

  1) User
    Failure/Error: it { should validate_presence_of :email  }

  NoMethodError:
      undefined method `validate_presence_of' for <RSpec::ExampleGroups::User:0x007f8177ff3408>
    # ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.00168 seconds (files took 2.72 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/models/user_spec.rb:5 # User
Run Code Online (Sandbox Code Playgroud)

但如何解决呢?

这是我的 Gemfile:

group :development, :test do
 gem 'byebug'
 gem 'rspec-rails', '~> 3.4', '>= 3.4.1'
 gem "factory_girl_rails", "~> 4.0"
 gem 'capybara', '~> 2.6', '>= 2.6.2'
 # Call 'byebug' anywhere in the code to …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

6
推荐指数
2
解决办法
7064
查看次数

如何在Rails 4.2中使用has_secure_password加密密码

我有一个API,我安装了下一个gem

 gem 'bcrypt' 
Run Code Online (Sandbox Code Playgroud)

进入我的用户模型我具体说:

has_secure_password
Run Code Online (Sandbox Code Playgroud)

我的数据库有一个名称字段

password_digest
Run Code Online (Sandbox Code Playgroud)

并且当运行播种器时,密码是加密的,但是当尝试从我的方法创建一个新用户时,密码是正常的,这是我创建新用户的方法

def self.from_auth(data)
    User.where(email: data[:email]).first_or_create do |user|
        user.email = data[:info][:email]
        user.name = data[:info][:name]
        user.provider = data[:info][:provider]
        user.uid = data[:info][:uid]
        user.password_digest = data[:info][:password]
    end
end
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

ruby encryption ruby-on-rails bcrypt-ruby ruby-on-rails-4

4
推荐指数
2
解决办法
1万
查看次数