当我运行时,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) 我有一个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)
谢谢 :)