2013-11-05 2 views
2

방금 ​​레일 앱을 만들면서 놀았습니다. 나는 바보 같은 짓을했다고 확신합니다. 나는 비계를 달고 모델 Ave vs Afe의 철자가 틀렸다. 마이그레이션 파일 및보기 파일의 모든 내용을 변경하고 'ave'에 대한 검색을 실행하여 내가 무엇을 놓쳤는 지 확인합니다. 어쨌든 마이그레이션을 실행하고 지금이 얻을 :PG :: UndefinedTable : ERROR : 관계가 존재하지 않습니다.

PG::UndefinedTable: ERROR: relation "aves" does not exist LINE 5: WHERE a.attrelid = '"aves"'::regclass^: SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"aves"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum 

Extracted source (around line #17): 

15 # GET /afes/new 
16 def new 
17 @afe = Afe.new 
18 end 
19 
20 # GET /afes/1/edit 

내가 내 postgsql 인덱스, 스키마를 확인하고 심지어 내 마이그레이션 및 실행 레이크 닦아했다 : DB : 리셋. 내 스키마, 모델 및 컨트롤러는 깨끗합니다. 그 오래된 'ave/aves'참조는 찾을 수있는 곳이 아닙니다. 활성 레코드가 끊어진 것 같지만 시작할 위치가 확실하지 않은 것 같습니다.

그것은 더미 플레이 앱이지만 처음부터 다시 시작하고 싶지는 않습니다. 마이그레이션을 다시 실행하도록 강제 할 수 있습니까?

답변

2

이것은 복수형 규칙, 모델 이름의 복수형을 만드는 데 사용되는 규칙과 관련이 있습니다.

ActiveSupport::Inflector.pluralize "afe" 
    => "aves" 

그래서 레일은 afe의 복수가 aves입니다 생각합니다.

당신은, 또는 config/initializers/inflections.rb이를 추가하여 마이그레이션 aves 다시 테이블의 이름을 변경하여 문제를 해결할 수 :

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'afe', 'afes' 
end 
+0

감사합니다! 결코 그것을 알아 내지 못했을 것입니다. 내가 동일한 기본 복수형으로 모델의 철자를 잘못했음을 우연히 알지 못했다. –

관련 문제