2011-12-28 2 views
0

M. Hartl의 가이드와 Postgres에서 3.1.0을 사용하여 첫 번째 실제 Rails 앱에서 더 작업하고 있습니다. 나는 인증 과정에서 10 장으로 이동했다. 페이지 대신, 나는 오프닝을 사용하고있다. 그것과는 별개로, 나는 6 장에서 그의 사용자, 세션을 따라 가고있다. 나는 사용자/index.html.erb에 갈 때 나는 다음과 같은 오류 받고 있어요 :Hartl 레일 3.0 샘플 '연산자가 존재하지 않습니다.'

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

에 유래 비슷한 문자열에 최대 읽기를 합의는 id 필드가 정수로 설정되어 있지 않은 것 같다. 정수라고 확인할 수 있습니다. 이 필드를 다시 생성해야한다면 모델을 생성 할 때이 필드가 레일로 생성 된 것처럼 보일 것입니다. 이후 사실, 레일스에 의해 자동으로 생성되는 초기 마이그레이션에서 ID 필드를 다시 생성해야합니까? 나는 어딘가에 그것을 읽는 것 같지 않다. 그것은 나쁜 생각이다.

하지만 그건 내 문제라고 생각하지 않습니다. 오류를 살펴보면 사용자의 전자 메일이 '[email protected]'이 아닌 '8'을 찾고 있다고 생각합니다. 그게 사실이라면 예상 ID 필드와 이메일 필드가 일치하지 않습니다. 그것은 예상 될 것입니다. 그러나 어떻게 나의 불일치를 발견/이해합니까? 이것은 내 경험이 없기 때문에 내가 다른 것을 찾을 수 있는지보기 위해 백 트레이시를보기 시작했습니다. gabebw의 github의 복사본을보고 코드의 뒷부분과 다른 점을 발견하지 못하고 속임수를 쓰고 있습니다.

어떻게해야하는지 어떻게 배워야합니까? 나는 @user, @users, 사용자, 코드의 사용자 사이의 차이점 사이에 고심하고있다. 나는 그것이 어떻게 사용되는지와 변수가 뷰, 헬퍼, 컨트롤러, 모델에서 그것의 관계와 일치해야한다는 맥락 때문에 이해한다. 어떻게 그걸 배웠습니까? 만약 누군가가 기꺼이 내 문제가 밀어 내 github/sam452/vitae에 authenticate1 지점에 있습니다. thx, sam452.

답변

1

데이터베이스를 재설정하고 마이그레이션 한 후 varchar가 아닌 것처럼 보입니다. 따라서 authenticate 메소드를 살펴보면 id가되어야 할 때 사용자 필드가 이메일 필드를 호출하는 것을 발견했습니다. 그래서 전자 메일과 id 필드가 일치하지 않는다는 이론이 옳았습니다. 감사.

관련 문제