ruby-on-rails - 关注railsturial.org时未定义方法 'remember_token="

标签 ruby-on-rails railstutorial.org

我看到了有关此问题机器人的几个问题,但没有一个对我有帮助。所以问题是,在执行时,如果我检查记住我,我会收到此错误:

“# 的未定义方法`remember_token='”

相关代码:

用户.rb

#Returns a random token.
def User.new_token
  SecureRandom.urlsafe_base64
end
# Rememember a user in the database for use in persistent sessions.
 def remember 
   self.remember_token = User.new_token **# This is the row 30 where the execution stops**
   update_attribute(:remember_digest, User.digest(remember_token))
end

我已检查数据库是否有列 Remember_digest,因此它不是数据库列。

此代码是从 session_helper.rb 调用的,即从代码:

# Remembers a user in a persistent session.
def remember(user)
  user.remember 
  cookies.permanent[:remember_token] = user.remember_token
  cookies.permament.signed[:user_id] = user.id
end

此外,在我的控制台中,如果我输入 User.new_token,控制台会毫无问题地返回新 token 。

最佳答案

Error: "undefined method `remember_token='

您收到此错误是因为用户表没有 Remember_token 字段。

I have checked the database has got the column remember_digest so it's not the database column.

当您使用 self.remember_token = User.new_token 时,您尝试使用 new_token 方法的输出来设置 users 表中的 Remember_token 字段。为什么您认为在将 users 表分配给 Remember_token 时需要有 Remember_digest 字段?

修复

如果你想实现记住我的功能,那么你可以按照这个railscast 。你的代码将是这样的:

#User.rb
#Returns a random token.
def new_token
  SecureRandom.urlsafe_base64
end
# Rememember a user in the database for use in persistent sessions.
def remember
  self.update_attribute(:remember_digest, new_token)
end

# Remembers a user in a persistent session.
def remember(user)
  user.remember 
  cookies.permanent[:remember_token] = user.remember_digest
  cookies.permament.signed[:user_id] = user.id
end

P.S 我正在使用 Remember_digest,因为它已经在您的用户表中。您可以更改它并使用更具描述性的字段,例如remember_token

关于ruby-on-rails - 关注railsturial.org时未定义方法 'remember_token=",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559857/

相关文章:

ruby-on-rails - 在 View 中显示关联模型的属性

javascript - Bootstrap 网格缩略图,单击时可展开预览

ruby-on-rails - Rails 中有什么方法可以处理 "precompile"Markdown 吗?

ruby-on-rails - RailsTutorial 3.2 Ch 11 - PostgreSQL 语法错误中断状态提要

ruby-on-rails-4 - 在Rails中使用Devise时是否需要 “Users” Controller

ruby-on-rails - Michael Hartl Rails Tutorial 第 7 章错误 Action not found in UsersController

javascript - Ruby on Rails 动态引导模态表

ruby-on-rails - 如何使用 ActiveRecord 返回父级唯一的最新子级

ruby-on-rails - Ruby 教程第 9 章练习 #9 - 测试失败

ruby-on-rails - Railstutorial.org Michael Hartl 第 9 章练习 3 "should not allow the admin attribute to be edited via the web"