0
我試圖在我的Rails應用程序中實現STI模式,並且我將變得瘋狂。Rails 4.2 STI //錯誤的投射(超類而不是子類)
我有三個型號:
超類:
class Reservation < ActiveRecord::Base
self.inheritance_column = :inheritance_type
#some code here
end
子類:
class ApartmentReservation < Reservation
#some code here
end
class StorageReservation < Reservation
#some code here
end
我希望得到一個子類的實例,調用父類,例如
Reservation.all
應該返回一個ApartmentReservation和StorageReservation的集合,但它返回一個Reservation的集合。
我一直在尋找答案,我發現這是因爲開發環境中的熱切負載。繼建議,我一直在試圖與這些代碼部分:
在初始化:
Rails.configuration.to_prepare do
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
end
在超類:
def self.descendants
[ApartmentReservation, StorageReservation]
end
在超類的底部:
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
但它仍然無法正常工作。
有沒有人有任何想法,如何使其工作?
這涉及rails server
,但在rails console
一切工作正常。
什麼是那些方法呢? –
@SergioTulentsev第一個方法返回一個狀態數組,第二個屬性數組(它使用ActiveRecord的columns_hash方法)。 –
這是暗示將這些方法放在答案中(或者至少是他們的簽名)。 –