第 9 章(新增)Rails 教程控制台练习:#<Class:0x00000004ab1dd8> 的未定义方法 'remember_token'



我在所有stackoverflow中搜索了一个答案,但仍然不知道该怎么办。练习要求我:

将user分配给数据库中的第一个用户,并通过直接调用它来验证member方法是否有效。

所以我应该打电话给吗

user.remember 

这给了我错误

undefined method `remember_token' for #<Class:0x00000004ab1dd8>

我做到了:

rails generate migration add_remember_digest_to_users remember_digest:string 
rails db:migrate

user.rb:enter code here

    class User < ApplicationRecord
  before_save { email.downcase! }
  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-]+(.[a-zd-]+)*.[a-z]+z/i
  validates :email, presence: true, length: { maximum: 255 },
                    format: { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  has_secure_password
  validates :password, presence: true, length: { minimum: 6 }
  # Returns the hash digest of the given string.
  def User.digest(string)
    cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
                                                  BCrypt::Engine::cost
    BCrypt::Password.create(string, cost: cost)
  end
  # Returns a random token.   Listing 9.2: Adding a method for generating     tokens.
  def User.new_token
    SecureRandom.urlsafe_base64
  end
  # Remembers a user in the database for use in persistent sessions.
  def remember      # Listing 9.3: Adding a remember method to the User     model. green
    self.remember_token = User.new_token
    update_attribute(:remember_digest, User.digest(remember_token))
  end
end

我运行了"rails测试",0次失败,0次错误,0次跳过!

您必须首先将第一个用户分配给用户,然后调用记住方法

你的做法是

user=第一个用户user.remember

最新更新