2012-07-29 2 views
1

레일스를 처음 사용하고 인증 부분에 devise를 사용하여 앱을 만들려고합니다. 내가 처음으로 느낀 것은 내 사용자기구가 ID를하지했기 때문에 내 테스트가 실패 있다고, 그래서이 실행 내 시험을 도와Devise : ID없이 레코드를 만들려고 시도합니다

self.primary_key = :id 

User 모델에이 점을 추가하는 듯했으나 지금은에 붙어있어 또 다른 문제. 매번 내가 사용자를 추가하려고하면 유증 컨트롤러는 다음과 같은 메시지와 함께 실패하는 이유는 사용자 ID가 자동으로

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create 

SQLite3::ConstraintException: users.id may not be NULL: INSERT INTO "users" ("active", "created_at", "current_sign_in_at", "current_sign_in_ip", "default_business_id", "email", "encrypted_password", "first_name", "last_name", "last_sign_in_at", "last_sign_in_ip", "remember_created_at", "reset_password_sent_at", "reset_password_token", "sign_in_count", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 

을 생성하고 있지? 나는 레일스 3.2와 함께 Devise 2를 달리고있다.

+0

인증 관련 코드를 보여주십시오. –

+0

음, 일반적으로 기본 키를 설정하는 것은 당신이해야 할 일이 아닙니다. 내가 당신이라면 나는 비품을 점검 할 것입니다. 문제가있을 수 있습니다. – niels

+0

@Niels,이 예외는 프론트 엔드에서 실제 사용자를 만들 때 발생합니다. 테스트는 정상적으로 실행됩니다. 어쨌든, 내가 설정하지 말아야한다고 말하면 당신이 옳았 기 때문에 조명기를 검사 할 것입니다. 기본 키 – Sergio

답변

2

글쎄, 나는 마침내 문제가 무엇인지 발견했다. users 테이블 id 컬럼이 DB의 기본 키로 정의되지 않았기 때문에 Rails가 값을 자동으로 할당하지 못했습니다. 나는이 테이블을 생성하는 마이그레이션을 만지지 않았기 때문에 어떻게되었는지 알지 못합니다 (이 파일은 Devise가 생성했습니다). 어쨌든 완전한 롤백을 만들고 마이그레이션을 다시 실행하면 문제가 해결됩니다. 대답 해 주신 모든 분들께 감사 드리며 앞으로이 사람에게 도움이되기를 바랍니다.

관련 문제