2012-08-06 1 views
0

레거시 스키마를 사용하여 단일 테이블 상속을 설정하려고하는데 어려움을 겪고 있습니다.레거시 스키마 및 복합 키를 사용하여 단일 테이블 상속

create_table "bms_codes", :id => false, :force => true do |t| 
    t.decimal "code_id",        :null => false 
    t.string "code_group",    :limit => 35, :null => false 
    t.string "code_name_short",  :limit => 100 
    ... 
end 

여기에 code.rb가 있습니다. 상속 할 유형 열이 있도록 열 별칭을 설정했습니다.

class Code < ActiveRecord::Base 
    set_table_name :bms_codes 
    set_primary_keys :code_id, :code_group #composite keys using the composite_primary_keys gem 

    alias_attribute :id, :code_id 
    alias_attribute :type, :code_group 
    alias_attribute :description, :code_name_short 
end 

그것은 inquiry_tracking_role.rb은 '귀하의 추적 역할'의 유형이 코드에서 모든 기록에 끌어한다 나의 이해이다. 이 올바른지? 콘솔에서 InquiryTrackingRole.all을 입력하면 Code.all과 동일한 결과를 얻습니다.

class InquiryTrackingRole < Code 
end 

내가 할 수있는 일이 가능한가요 아니면 스키마가 너무 fubar'ed입니까?

답변

0

ActiveRecord는 데이터베이스가 응용 프로그램에 속하고 ActiveRecord 규칙 및 가정을 따르는 것으로 가정합니다. 스키마를 모든 도메인 모델에 매핑하도록 설계되지 않았습니다.

스키마를 도메인 모델에 매핑하려면 DataMapper를 사용해보십시오.