2011-04-27 2 views
0

id 열이없는 텍스트 기본 키가있는 레거시 SQL Server 데이터베이스 뷰에 대한 비 계도를 생성했습니다. 나는 모델에서 set_primary_key "Gift_ID"를 가지고 있지만, 나는 show 메소드에서 에러를 얻는다.set_primary_key에 문제가있는 기존 테이블

레코드를 나열 할 수 있지만 표시 링크를 클릭하면 오류가 발생합니다. 모델에 set_primary_key가 있어도 id를 사용하여 레코드를 조회하는 것으로 보입니다. 다음은 표시된 오류의 전체 텍스트입니다.

NoMethodError in PledgesController#show 

undefined method `eq' for nil:NilClass 
Rails.root: /home/steve/RubymineProjects/otatest 

Application Trace | Framework Trace | Full Trace 
app/controllers/pledges_controller.rb:16:in `show' 
Request 

Parameters: 

{"id"=>"PL-24681"} 
Show session dump 

Show env dump 

Response 

Headers: 

None 

"id"를 키로 사용하려는 이유는 무엇입니까? 도움 주셔서 감사합니다!

+0

"show"링크와 컨트롤러의 show 메소드가 포함 된보기 코드를 게시하고 싶습니까? – mharper

답변

1

나는 내 문제를 해결했기 때문에 다른 사람들을 돕기 위해 내 자신의 질문에 답할 것이라고 생각했다. 모델의 set_primary_key 옵션 사용을 포기하고 데이터의 키 필드를 사용하여 레거시 시스템 (SQL Server)의보기에 "id"필드를 추가했습니다. 그것은 id 문제를 해결했다.
생성 된 스캐 폴딩 필드 이름은 대소 문자를 구분합니다. 그래서 뷰를 사용하여 모든 필드 이름을 소문자로 설정했습니다. 스캐 폴딩 케이스가 레거시 필드 이름과 일치하는지 확인할 수는 있지만, 모두 소문자로 설정하는 것이 더 쉽습니다.
한 가지 더. 나는 몇 가지 레거시 부울 필드가 있었는데 "?" 필드 이름의 끝에, 스캐 폴딩은 그걸 좋아하지 않았어. 그래서 나는 "?" 보기에서.

결론 레거시 시스템 위에 Rails 앱을 빌드하는 것이 어려워요. 테이블을 레거시 데이터베이스로 마이그레이션하고 필드를 만든 방식을 검사하여 내보기가 일치하도록 수정하여 대부분의 문제점을 발견했습니다.