Ich versuche ein STI-Muster in meiner Rails-Anwendung zu implementieren und ich werde verrückt.Rails 4.2 STI // Falsches Casting (Superklasse statt Subclass)
Ich habe drei Modelle:
Superklasse:
class Reservation < ActiveRecord::Base
self.inheritance_column = :inheritance_type
#some code here
end
Subklassen:
class ApartmentReservation < Reservation
#some code here
end
class StorageReservation < Reservation
#some code here
end
ich eine Subklassen-Instanz erhalten möchten, rufen Superklasse, zum Beispiel
Reservation.all
sollte eine Sammlung von ApartmentReservation und StorageReservation zurückgeben, aber es wird eine Sammlung von Reservierung zurückgegeben.
Ich habe nach einer Antwort gesucht und ich fand heraus, dass es wegen einer eifrigen Last in einer Entwicklungsumgebung ist. Im Anschluss an die Ratschläge, ich habe mit diesen Teilen des Codes versucht:
In initializers:
Rails.configuration.to_prepare do
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
end
In Superklasse:
def self.descendants
[ApartmentReservation, StorageReservation]
end
Im unteren Teil des Oberklasse:
require_dependency 'app/models/apartment_reservation'
require_dependency 'app/models/storage_reservation'
Aber es funktioniert immer noch nicht.
Hat jemand eine Idee, wie man es funktioniert?
Dies betrifft rails server
, jedoch in rails console
alles funktioniert gut.
Was diese Methoden waren? –
@SergioTulentsev Die erste Methode hat ein Array von Status zurückgegeben, die zweite ein Array von Attributen (es wurde die columns_hash-Methode von ActiveRecord verwendet). –
Es war ein Hinweis, diese Methoden in die Antwort (oder zumindest ihre Signaturen) zu setzen. –