簡體   English   中英

第9章(新)Rails教程控制台練習:#的未定義方法`remember_token&#39; <Class:0x00000004ab1dd8>

[英]Chapter 9 (new) Rails Tutorial console exercise: undefined method `remember_token' for #<Class:0x00000004ab1dd8>

我在所有stackoverflow中搜索了答案,但仍然不知道該怎么辦。 練習要求我:

將用戶分配給數據庫中的第一個用戶,然后通過直接調用它來記住方法是有效的。

所以我應該打電話給:

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-z\d\-]+(\.[a-z\d\-]+)*\.[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

我進行了0次失敗,0次錯誤,0次跳過的“ rails test”!

您必須先將第一個用戶分配給user,然后調用Remember方法

你做的方式是

用戶= User.first user.remember

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM