2011-03-03 2 views
0

계승 된 리소스 및 활성 레코드 SQL 서버 어댑터 및 tinyTds 보석과 함께 레일즈 3.0.3을 사용하고 있습니다.레일 3 데이터베이스에서 레코드를 삽입 한 후 인스턴스 변수에서 기본 키가 업데이트되지 않음

has_one 관계가있는 개체를 만들려고하면 (상속 된 리소스에서 create!를 사용하여) 기본 개체 ID가 부모 개체에 설정되지 않습니다. 따라서 has_one 객체에 외래 키로 초기화되지 않은 가비지 ID를 삽입하려고하면 외래 키의 정수로 가비지 ID를 삽입하려고 시도 할 때 arithmatic overflow 오류가 발생합니다.

누구나이 문제에 직면 했습니까?

사용자 has_one 주소. (새 사용자를 만드는 동안 User.id가 주소 테이블에 user_id를 삽입하는 동안 업데이트되지 않으므로 삽입이 실패하고 사용자에게 주소뿐만 아니라 항목이 없다는 최종 결과와 함께 전체 트랜잭션이 롤백됩니다. 테이블)

코드를 추적하는 동안 활성 레코드 lib/active_record/persistence.rb의 create 메소드가 새로 삽입 된 레코드의 ID 대신 new_id를 가비지 초기화되지 않은 값으로 반환합니다.

이 문제를 해결하는 데 도움이되는 모든 도움/조언을 보내 주시면 감사하겠습니다.

레일 콘솔에서도 간단한 @user = User.create!를 수행하면 @user 개체에 올바른 기본 키 ID가 없습니다.

답변

관련 문제