2016-01-20 56 views
1

我正在使用active_record-acts_as gem來實現多個表繼承。我的情景:ruby​​ active_record-acts_as gem:從父實例獲取正確的子項

class Vehicle < ActiveRecord::Base 
    actable 
end 

class Plane < ActiveRecord::Base 
    acts_as :Vehicle 
end 

class Train < ActiveRecord::Base 
    acts_as :Vehicle 
end 

每當我創建飛機或火車的情況下,將創建一個相應的車輛。

我正在開發一個API,所以在列出車輛後,我將返回Vehicle模型中的字段。但是,當我收到GET/Vehicles/1時,我想返回實際車輛,無論是飛機,火車等。

任何想法?

回答

0
class VehiclesController 
    def show 
    @vehicle = Vehicle.find(params[:id]).specific 
    end 
end 

由於這兩種飛機和火車「擴展」的MTI車輛檢測您可以通過查詢Vehicle得到記錄。 .specific爲您提供實際的Plane或Train實例,而不是父類型。

+0

這是正確的!當我閱讀寶石文檔時,我完全誤解了這種方法 – unknown