簡體   English   中英

Ruby on Rails - 設計錯誤

[英]Ruby on Rails - Devise Error

我和Devise發生了一個奇怪的錯誤。 當我加載主頁時,它不喜歡這段代碼:

<% if signed_in? %><p>Welcome back, 
   <%= current_user.first_name %> <%= current_user.last_name %></p><% end %>

因為它說:

undefined method `encrypt' for #<Class:0x3720300>

我在我的應用程序中搜索了“encrypt”,它返回的是我的sessions_helper.rb:

module SessionsHelper
  def sign_in(user)
    remember_token = User.new_remember_token
    cookies.permanent[:remember_token] = remember_token
    user.update_attribute(:remember_token, User.encrypt(remember_token))
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def sign_out
    current_user.update_attribute(:remember_token, User.encrypt(User.new_remember_token))
    cookies.delete(:remember_token)
    self.current_user = nil
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    remember_token = User.encrypt(cookies[:remember_token])
    @current_user ||= User.find_by(remember_token: remember_token)
  end
end

這是什么意思? 我需要重新安裝嗎?

如果我沒有錯,那么您正在關注Michael Hartl的Rails教程,因為您的代碼類似於它。 如果那是真的那么,你需要在User模型中添加一個類方法encrypt

class User < ActiveRecord::Base
  ...
  def User.encrypt(token)
    Digest::SHA1.hexdigest(token.to_s)
  end
  ...
end

暫無
暫無

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

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