0

我正在使用 3.1.0 和 M. Hartl 的指南和 Postgres 开发我的第一个实时 Rails 应用程序。我已经进入第 10 章进行身份验证工作。我使用的是开口而不是页面。除此之外,我从第 6 章开始关注他的用户、会话。当我转到 users/index.html.erb 时,出现以下错误:

PGError:错误:运算符不存在:字符变化 = 整数第 1 行:...CT "users".* FROM "users" WHERE "users"."email" = 8 LIMIT

阅读 stackoverflow 上的类似字符串,共识似乎是 id 字段未设置为整数。我可以确认它是整数。如果我要重新生成这个字段,在我看来这个字段是在我生成模型时由 rails 创建的。既然这是真的,我是否应该在 Rails 自动生成的早期迁移中重新生成一个 id 字段?我似乎在某个地方读到了一个坏主意。

但我不认为这是我的问题。查看错误让我认为它正在寻找用户的电子邮件,它是“8”而不是像“joe@example.com”这样的东西。如果这是真的,那么我的预期 id 字段和电子邮件字段之间不匹配。这是意料之中的,但我如何找到/理解我的不匹配?因为这是由于我缺乏经验,所以我开始查看我的回溯,看看我是否能找到不同之处。我在 github 上查看 gabebw 的副本并在他的代码中除了后面的章节之外没有发现任何不同的东西。

我应该如何学习该做什么?我在代码中@user、@users、users、user 之间的区别之间挣扎。我理解它是因为它的使用方式以及变量应该与其在视图、助手、控制器、模型中的关系相匹配。你是怎么学的?如果有人愿意,我的麻烦推送就在我的 github/sam452/vitae 上的 authenticate1 分支上。谢谢,sam452。

4

1 回答 1

1

在我重置并迁移数据库之后,它似乎不是 varchar。所以查看身份验证方法,我发现用户模型正在调用电子邮件字段,而它应该是 id。因此,电子邮件和 id 字段不匹配的理论是正确的。谢谢。

于 2012-01-01T21:39:14.430 回答