2009-05-27 2 views
2

나는 생성하고있는 일부 보고서에 해당하는 MySQL에서보기를 만들었습니다 (롤업으로 월, 연도별로 그룹화 된 합계). 보기에는 3 열 (년, 월, 총)이 있습니다. 보기/표 이름은 "report_monthly"입니다. 내가 연결()을 통해 원시 SQL을 사용할 수 있습니다 select_all (...)하지만이 테이블에 대한 ActiveRecord를 만들고 싶습니다. 여기 Rails가 (SQL보기를 기반으로 한) 내 모델 사용을 거부하는 이유는 무엇입니까?

는 "report_monthly.rb"라는 파일에 내 모델 :

class MonthlyReport < ActiveRecord::Base 
    # I assume that setting the table name circumvents the pluralized file name convention 
    set_table_name "report_monthly" 
end 

파일은 표준 레일 구조에 배치됩니다 : 나는 RoR에 콘솔을 사용할 때 이제

app 
    controllers 
    helpers 
    models 
     report_monthly.rb 
    views 

(스크립트/콘솔) 심지어 클래스 훨씬 적은 목록을 볼 수없는 행

>> MonthlyReport 
    NameError: uninitialized constant MonthlyReport 

내 다른 m의 모든 모든 odels 잘 작동하지만 "singular.rb"-> 클래스 Singluar -> 표의 규칙을 따르십시오.

업데이트 : 보기가 변경되지 않는다는 사실과 관련이 있습니까? 삽입/업데이트 할 수 없습니까?

버전 :

루비 1.8.7이, 2.3.2 레일, MySQL은 5.0.75

답변

7

파일 이름과 클래스 이름이 동일해야 파일이 있어야합니다. monthly_report.rb이라고합니다.

+0

나는 set_table_name을 사용하여 대회를 포용 할 수 있다고 생각했다. 분명히 filename-> classname 매핑은 선택 사항이 아니다. 감사합니다! – basszero

0

내가 틀리지 않는 한, 나는 레일 당신이 SQL 뷰 상에 액티브 모델을 기반으로 할 수 있습니다 생각하지 않는다 .

0

어쩌면 글꼴이나 오타 일 수도 있지만, 루비 클래스에 사용하는 이름보다 DB 테이블 이름에 밑줄이 많이 붙은 것처럼 보입니다. -> 오케이, 오타되었습니다!

To John Topley : PostgreSQL은 뷰를 선택 테이블이 기본 테이블의 데이터를 추출하도록 정의 된 테이블로 정의합니다. Ruby/Rails는 뷰가 실제 테이블이 아니라는 것을 알지 못합니다. 따라서 여러분의 믿음은 일반적으로 사실이 아닙니다 (MySQL의 경우).

EDIT (= 2 번째 시도) : 클래스의 레일 자동 로딩 메커니즘에 문제가 될 수 있습니까? 클래스를 포함하는 루비 파일이 올바른 위치에 있습니까? (나는 "Rails Way"사본을 가지고 있지 않지만 다른 사람이 도움을 줄 수 있습니다.)

+0

markdown와의 싸움 : ( – basszero

0

보기에 ID 열이 있어야하며 물론 고유해야합니다.

왜 "monthly_reports"(모델 이름에 해당)보기를 호출하고 생활을 더 간단하게 만들지 않습니까?

관련 문제