2011-10-24 2 views
0

"id"라는 자동 증가 기본 키와 "name"이라는 문자열 필드가있는 "Doo_dad"라는 기존 테이블에서 데이터에 액세스해야하는 새 레일 앱이 있습니다. . 새로운 레일스 앱이 기존 테이블의 일부 데이터를 그립니다.

그래서 나는 다음과 같다 응용 프로그램/모델/doodad.rb라는 새로운 모델 파일 생성 : 나는 레일 콘솔을로드 할 때

class Doodad < ActiveRecord::Base 
    set_table_name "Doo_dad" 
end 

, 내 레일 생성 모델에 도달 할 수를하지만 응용 프로그램에서 클래스를

> rails console 
irb> Doodad.class 
NameError: uninitialized constant Doodad 
(from (irb):1: in `evaluate` 

클래스 장식물을 볼 수 없었다/모델/doodad.rb로드 점점되지 않았습니다. 내가 원숭이 패치 응용 프로그램/모델/doodad.rb의 내용에 모든 것이 괜찮다고, 그리고 때

> rails console 
irb> class Doodad < ActiveRecord::Base 
irb> set_table_name "Doo_dad" 
irb> end 
irb> Doodad.class 
=> OK 
irb> d=Doodad.new 
irb> d.name="Uno" 
irb> d.save 
=> OK no errors 

을 즉 장식물은 "우노"라고 : 내가했을 때 다음과 같은 때문에이 코드는, 좋은 데이터베이스에 저장되었습니다.

레거시 테이블에 연결하는 모델 클래스를로드하려면 어떻게해야합니까?

+0

어떤 오류가 있습니까? "어떻게되는지"와 같은 것들은 종종 유용한 진단 도구입니다. –

+0

테이블이'schema.rb'에 표시됩니까? –

+0

NameError : 초기화되지 않은 상수 Doodad –

답변

0

D' oh! 나는 클래스를 app/models/doodads.rb에 넣었습니다. app/models/doodad.rb으로 이름을 바꾼 후에도 문제가 없었습니다.

Rails 모델 파일 명명 규칙 (파일 이름 = classname.underscore + ". rb")이있는 파일 당 하나의 모델 클래스 규칙이이 작업을 수행하기위한 절대 "필수 사항"이라고 생각합니다.