Ruby on rails NoMethodError未定义的方法`保存';零级:零级
我需要做什么来解决这个问题?我是RubyonRails新手 运行rspec时出错Ruby on rails NoMethodError未定义的方法`保存';零级:零级,ruby-on-rails,rspec,Ruby On Rails,Rspec,我需要做什么来解决这个问题?我是RubyonRails新手 运行rspec时出错 1) remember token should have a nonblank remember token Failure/Error: before { @user.save } NoMethodError: undefined method `save' for nil:NilClass # ./spec/models/user_spec.rb:125:in `block (2 levels)
1) remember token should have a nonblank remember token
Failure/Error: before { @user.save }
NoMethodError:
undefined method `save' for nil:NilClass
# ./spec/models/user_spec.rb:125:in `block (2 levels) in <top (required)>'
user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
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 }
validates :password, length: { minimum: 6 }
validates :password_confirmation, presence: true
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
class用户
它看起来像这段代码
describe "remember token" do
在街区外
describe User do
...
end
如果您将其移动到块内,那么它将具有创建@user对象的before action fire(然后将其保存在您自己的before块中)它看起来像这段代码
describe "remember token" do
在街区外
describe User do
...
end
如果将其移动到块内,则它将具有创建@user对象的before action fire(然后将其保存在自己的before块中)将找不到@user变量,因此 您应该将“记住标记”移动到内部->
describe User do
//current definitions
describe "remember token" do
before { @user.save }
it "should have a nonblank remember token" do
subject.remember_token.should_not be_blank
end
end
end
将找不到@user变量,因此 您应该将“记住标记”移动到内部->
describe User do
//current definitions
describe "remember token" do
before { @user.save }
it "should have a nonblank remember token" do
subject.remember_token.should_not be_blank
end
end
end