Ruby on rails 未定义的局部变量或方法“记住”标记';-M Hartl';s轨道教程第8章

Ruby on rails 未定义的局部变量或方法“记住”标记';-M Hartl';s轨道教程第8章,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,花了一些时间来解决这个问题,我已经没有办法修复这个错误了。我已经从M Hartl的RoR教程到达了第8章(登录/退出)。这里也有类似的问题(),我尝试了这里给出的所有答案,但都没有用 在my user.rb文件中定义了方法memory_令牌: class User < ActiveRecord::Base before_save { self.email = email.downcase } before_create :create_remember_token has_secure_

花了一些时间来解决这个问题,我已经没有办法修复这个错误了。我已经从M Hartl的RoR教程到达了第8章(登录/退出)。这里也有类似的问题(),我尝试了这里给出的所有答案,但都没有用

在my user.rb文件中定义了方法memory_令牌:

class User < ActiveRecord::Base

before_save { self.email = email.downcase }
before_create :create_remember_token
has_secure_password
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: 4 }
validates :password_confirmation, presence: true

def User.new_remember_token
    SecureRandom.urlsafe_base64
end


def User.encrypt(token)
    Digest::SHA1.hexdigest(token.to_s)
end 

private

    def create_remember_token
        self.remember_token = User.encrypt (User.new_remember_token)
    end

    end

我对Ruby和Rails(以及一般的编码)还不熟悉,所以任何线索都会有很大帮助。

听起来您忘记了生成(或应用)迁移,该迁移将
记住\u标记
属性添加到
用户
模型中

rails generate migration add_remember_token_to_users remember_token:string
rake db:migrate
rake db:test:prepare

听起来您忘记了生成(或应用)将
记住\u令牌
属性添加到
用户
模型的迁移

rails generate migration add_remember_token_to_users remember_token:string
rake db:migrate
rake db:test:prepare

在我的例子中,错误是一个愚蠢的错误,没有添加:

remember_token = User.encrypt(cookies[:remember_token])

我在sessions\u helper.rb文件中定义了当前用户

在我的例子中,这个bug是一个愚蠢的错误,没有添加:

remember_token = User.encrypt(cookies[:remember_token])

我在sessions\u helper.rb文件中定义了当前用户

您将在此处找到答案:您将在此处找到答案:
remember_token = User.encrypt(cookies[:remember_token])