2014-10-07 4 views
0

대부분의 테이블과 ID가 Rails 형식이 아니므로 레거시 데이터베이스를 사용하는 Rails 3.2 앱이 있습니다. 전체 앱은 set_table_nameset_primary_key을 사용하고 있으며 최근에 3.0에서 3.2로 이전했기 때문에 더 이상 사용되지 않을 것이라고 경고합니다.Rails "self.primary_key = 'another_key'"가 작동하지 않습니다.

self.primary_key = 'another_key'을 사용하는 것이 좋습니다. 그러나 어떤 이유로이 방법이 작동하지 않습니다.

내가 구축하고 모델을 저장 FactoryGirl를 사용하고있어 그것이 나에게 다음과 같은 오류를 제공하는 모델을 저장하려고 할 때 기본적으로 내가 이해 것과 (Oracle 데이터베이스에)

ActiveRecord::StatementInvalid: 
    OCIError: ORA-01400: cannot insert NULL into (sql string) 

을, 사용자 정의 primary_key가 올바르게 설정되지 않고 nil로 끝나기 때문에 분명히이 오류가 발생합니다. SQL 문자열에 올바른 사용자 지정 PK가 있지만 전달 된 값이 null 인 것으로 보입니다.

수정 사항이 있습니까? deprecated set_primary_key를 계속 사용하면 완벽하게 작동하지만 depreceted 상태이므로 계속 사용하고 싶지 않습니다.

답변

0

문제점을 발견했습니다. 그 중 일부 파일에서 밝혀졌습니다

self.primary_key = :some_key 

이것은 기호가 아닌 문자열을 전달하기 때문에 실패했습니다. 어디에서나 문자열 :some_key을 변경하면 문제가 해결되었습니다.