2011-12-28 45 views
0

我正在使用3.1.0版的M. Hartl的指南和Postgres在我的第一個活動的Rails應用程序上工作得更多。我已經進入Chap 10進行身份驗證。而不是頁面,我使用開口。除此之外,我從第六章開始關注他的用戶,會議。當我去到用戶/ index.html.erb,我發現了以下錯誤:Hartl rails 3.0樣本'操作員不存在'

PGError: ERROR: operator does not exist: character varying = integer LINE 1: ...CT "users".* FROM "users" WHERE "users"."email" = 8 LIMIT

上計算器類似串讀了起來,共識似乎是,ID字段沒有被設置爲整數。我可以確認它是整數。如果我要重新生成這個字段,那麼在我生成模型時,在我看來這個字段是由rails創建的。既然這是真的,我應該在早期的遷移中重新生成一個id字段,這將會由Rails自動生成嗎?我似乎讀了某個地方這是一個壞主意。

但我不認爲這是我的問題。看着這個錯誤,我認爲它正在尋找一個用戶的電子郵件是「8」,而不是像「[email protected]」。如果這是真的,那麼我在預期的ID字段和電子郵件字段之間存在不匹配。這是可以預料的,但我如何找到/理解我的不匹配?因爲這是由於我缺乏經驗,所以我開始看我的回溯,看看我能否找到不同的東西。我通過在github上查看gabebw的副本而作弊,除了後面的章節之外,沒有發現任何不同之處。

我該如何學習該怎麼做?我在@user,@users,用戶,代碼中的用戶之間存在着差異。我理解它是由於它如何使用的上下文以及變量應該匹配它在視圖,助手,控制器,模型中的關係。你是如何學習它的?如果有人願意,我的問題推動是在authenticate1分支的github/sam452/vitae上。 thx,sam452。

回答

1

在我重置並遷移數據庫後,它看起來並不是varchar。因此,看看身份驗證方法,我發現用戶模型正在調用電子郵件字段,它應該是id。所以電子郵件和id字段之間的不匹配的理論是正確的。謝謝。