为什么这个未使用的 self.hash 方法会导致“无法将字符串转换为整数”错误?

2024-04-09

我正在跑过Lynda Rails 3 教程 http://www.lynda.com/Ruby-on-Rails-3-tutorials/essential-training/55960-2.html。在某一时刻,在名为 access_controller 的控制器中,我们调用名为 AdminUser 的模型中的方法。原来的调用是:

authorized_user = AdminUser.authenticate(params[:username], params[:password])

当我运行 Rails 服务器、打开浏览器并访问相应的视图时,出现错误:类型错误,无法将字符串转换为整数

已被问过同样的问题twice https://stackoverflow.com/questions/6497351/cant-convert-string-into-integer-in-ruby-ruby-on-rails before https://stackoverflow.com/questions/9048098/user-authentication-trying-to-convert-string-into-integer。第一次,提问者说问题第二天就解决了。 (我三天前第一次遇到这个问题,所以还没有发生。)第二个问题还没有得到解答。我将尝试提供更多细节:

模型中的方法是:

  def self.authenticate(username="", password="")
    user = AdminUser.find_by_username(username)
    if user && user.password_match?(password)
      return user
    else
      return false
    end
  end

当我从 Rails 控制台调用这个方法时,它工作得很好。从控制器调用它,或者尝试通过浏览器访问它,似乎出了问题(我是相对初学者,所以我很抱歉我无法更好地表达这个想法)。此后,我在同一 AdminUser 模型中使用更简单的方法复制了此错误:

  def self.nothing
    true
  end

这仍然给我同样的错误。然后我尝试从不同的控制器和操作(称为pages_controller#show)调用 self.nothing 方法。当我尝试在浏览器中打开它时,我再次遇到相同的错误:“无法将字符串转换为整数”

然后我在我的主题模型中创建了一个相同的 self.nothing 方法。当我尝试从页面控制器中的显示操作运行该方法时,它工作得很好。没有错误。

因此,相同的方法在 Rails 控制台中运行得很好,当我将它放入我的主题模型中时也运行得很好,但当我将它放入我的 AdminUser 模型中时会产生错误。

然后,我尝试注释掉 AdminUser 模型中看到的所有内容,看看是否可以使错误消失。我终于能够了。该错误显然是由另一种方法引起的:

 def self.hash(password="")
   Digest::SHA1.hexdigest(password)
 end

当我们添加这些其他方法时,我应该在几个视频课程前删除此方法:

 def self.make_salt(username="")
   Digest::SHA1.hexdigest("Use #{username} with #{Time.now} to make salt")
 end

 def self.hash_with_salt(password="", salt="")
   Digest::SHA1.hexdigest("Put #{salt} on the #{password}")
 end

我从未删除过第一个,但由于某种原因,它是导致错误的那个。

所以,我现在的问题是:为什么留在该方法(没有在任何地方使用)会导致“无法将字符串转换为整数”错误?


原因是User.hash覆盖Object.hash应该返回一个Fixnum。 你应该将其名称更改为类似的名称User.make_hash

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个未使用的 self.hash 方法会导致“无法将字符串转换为整数”错误? 的相关文章

随机推荐

  • 如何在 Angular 中设置默认页面

    当我请求包含以下 URL 的链接时 出现错误 http xxx 46630 或与此http crmbyzaid azurewebsites net 但当我添加时效果很好 index html 与网址 现在 当我请求时 我想设置部分页面 ap
  • 在 moment.js 中本地化日期和月份 [重复]

    这个问题在这里已经有答案了 如何在 moment js 中本地化当前日期和月份 没有年份 我想要的正是输出moment format LL 但没有年份部分 考虑以下示例 moment locale tr format LL 1 Hazira
  • 如何在单引号字符串中使用变量?

    如何回显单引号内的变量 echo test text here is some test text counter output gt gt FILE 变量在双引号字符串中扩展 但在单引号字符串中不扩展 name World echo He
  • 在设备驱动程序中使用 select()/poll()

    我有一个驱动程序 它可以处理多个 TCP 连接 有没有一种方法可以在给定列表的情况下执行类似于内核中用户空间应用程序 api 的 select poll epoll 的操作struct sock s Thanks 您可能想编写自己的自定义s
  • MATLAB 类对象未更新

    我正在编写一个简单的 MATLAB 类 它具有一些属性和一个方法 类的构造函数使用默认值初始化属性 类的方法在类被构造之后获得额外的输入以更新类属性 classdef classTest properties p1 p2 p3 p4 end
  • 如何使用 css 代码单独设置 gtk 小部件的样式

    在这之后GTK 将字体更改为旋转按钮 https stackoverflow com questions 47083294 gtk change font to spin button和这个为什么 CSS 样式没有应用于 GTK 代码 ht
  • 如何使用文本操作

    使用目的是什么文本动作 http docs oracle com javase 6 docs api javax swing text TextAction html from 抽象动作 http docs oracle com javas
  • 将cpp文件添加到cocos2d-x项目android项目中

    我已按照本教程进行操作http www raywenderlich com 33750 cocos2d x tutorial for ios and android getting started http www raywenderlic
  • Facebook Graph API:如何获取评论中的“来自”字段

    我有一个尚未发布的 Facebook 应用程序 测试模式 我使用页面访问令牌从我自己页面上特定帖子的评论中提取 来自 字段 但它返回空字段 这是我的图形 API 查询 gt post id comments fields from 当我使用
  • 给单元格着色 Google Chart - 散点图

    我在我的一个项目中使用谷歌图表 我需要使用以下代码为谷歌散点图中的一组单元格着色 我在用google visualization arrayToDataTable用于处理数据 以下是我的代码 div div
  • 在 Android 中使用 Service 作为单例

    创建一个不好的做法吗 Service作为单身人士工作 我的意思是一个Service它永远不会停止 并且包含一些其他引擎和Activities会使用 所以Service可能有类似的东西 public class CustomService e
  • 对空间数据使用简单的 for 循环

    抱歉 这将是一个 for 循环 101 问题 我正在努力编写一个简单的 for 循环来根据经度纬度数据生成城市之间的距离表 locations lt read csv distances csv Locations 返回下表 City Ty
  • 具有自由 CORS 政策的公开托管图像? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在做一些将图像加载到画布上的测试 并且正在使用私下里在我们的 aws cdn 上托管图像 这个 c
  • 如何找到 ROI 并检测内部标记?

    我是计算机视觉的初学者 我有一个关于检测和跟踪的问题 我想检测下图中的白色矩形 以确定感兴趣的区域并检测红色标记的轮廓 但我不想利用颜色信息来检测标记 谁能给我关于如何做到这一点的建议 如果您只想检测圆圈 则可以使用经过调整的霍夫变换 ht
  • 具有有序索引的 R 向量-向量匹配

    这里我有两个字符串向量 它们的顺序很重要并且无法更改 vec1 lt c carrot carrot carrot apple apple mango mango cherry cherry vec2 lt c cherry apple 我
  • 可通过属性名称或索引选项访问的结构

    我对 Python 非常陌生 并试图弄清楚如何创建一个具有可通过属性名称或索引访问的值的对象 例如 os stat 返回 stat result 或 pwd getpwnam 返回 struct passwd 的方式 在试图弄清楚这一点时
  • alloca可以完全替代吗?

    我读过很多地方alloca已过时 不应使用 而应使用可变长度数组 我的问题是这样的 是alloca完全可以用变长数组代替 在我的特定实例中 我有一些看起来像这样的东西 typedef struct int value size t size
  • 如何在 Kotlin 中编写以下代码来实现回调

    我如何像java一样用Kotlin编写 Callback callback new Callback Override public void getCallback ServerResponse serverResponse var ca
  • 基于 RCP 的应用程序的 P2 更新失败

    我尝试通过 P2 更新站点更新基于 Eclipse RCP 3 5 的应用程序 该应用程序包含两个功能 产品是由Eclipse Buckminster P2 更新站点的创建是产品构建的一部分 当通过菜单开始更新时 Update gt Che
  • 为什么这个未使用的 self.hash 方法会导致“无法将字符串转换为整数”错误?

    我正在跑过Lynda Rails 3 教程 http www lynda com Ruby on Rails 3 tutorials essential training 55960 2 html 在某一时刻 在名为 access cont