2012-08-06 51 views
0

我正嘗試使用傳統模式設置單表繼承,但我很難。以下是表bms_codes的模式繼承自:使用傳統模式和複合鍵的單表繼承

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?

回答

0

ActiveRecord假定數據庫屬於應用程序,並且數據庫將遵循ActiveRecord約定和假設。它不是爲了將任何模式映射到任何域模型而設計的。

如果你想將你的模式映射到你的域模型,你可以試試DataMapper。