Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails NoMethodError未定义的方法`保存';零级:零级_Ruby On Rails_Rspec - Fatal编程技术网

Ruby on rails NoMethodError未定义的方法`保存';零级:零级

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)

我需要做什么来解决这个问题?我是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) 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