Пример Hartl rails 3.0 «оператор не существует» - PullRequest
0 голосов
/ 28 декабря 2011

Я больше работаю над своим первым живым Rails-приложением, использующим 3.1.0, с руководством М. Хартла и Postgres.Я перешел к главе 10, работая в аутентификации.Вместо страниц я использую открытия.Кроме того, я слежу за его пользователями, сессиями, начиная с 6 главы.Когда я захожу на users / index.html.erb, я получаю следующую ошибку:

PGError: ОШИБКА: оператор не существует: символ меняется = целое число LINE 1: ... CT "users ". * FROM" users "WHERE" users "." email "= 8 LIMIT

При чтении аналогичных строк в стеке потока, все согласны с тем, что поле id не установлено в целое число,Я могу подтвердить, что это целое число.Если бы я регенерировал это поле, мне бы показалось, что это поле было создано рельсами, когда я генерировал модель.Так как это было бы правдой, я должен восстановить поле id в ранней миграции, которая будет автоматически генерироваться Rails?Кажется, я где-то читал, что это плохая идея.

Но я не думаю, что это моя проблема.Глядя на ошибку, я думаю, что она ищет электронную почту пользователя, которая имеет значение «8», а не что-то вроде «joe@example.com».Если это правда, то у меня несоответствие между ожидаемым полем идентификатора и полем электронной почты.Этого следовало ожидать, но как мне найти / понять мое несоответствие?Поскольку это происходит из-за моей неопытности, я начал смотреть на свой след, чтобы посмотреть, смогу ли я найти что-то другое.Я обманываю, глядя на копию Габеба на github и не нахожу ничего, кроме более поздних глав в его коде.

Как мне узнать, что делать?Я борюсь между разницей между @user, @users, пользователями и пользователями в коде.Я понимаю это из-за контекста того, как он используется, и того, что переменная должна соответствовать его отношениям в представлении, помощнику, контроллеру, модели.Как вы узнали это?Если кто-то захочет, мой проблемный пуш на моем github / sam452 / vitae в ветви authenticate1.спасибо, sam452.

1 Ответ

1 голос
/ 02 января 2012

Похоже, что это не varchar, после того, как я сбросил и перенес базу данных. Поэтому, глядя на методы аутентификации, я обнаружил, что пользовательская модель вызывает поле электронной почты, когда оно должно быть идентификатором. Таким образом, теория о том, что несоответствие между электронной почтой и полями id была правильной. Спасибо.

...