Ruby: Class.new gibt den Fehler "Klasse nicht initialisiert" in der rails-Konsole an

8

Ich erstelle eine leichtgewichtige App, um Informationen für bevorstehende Ereignisse zu erstellen und anzuzeigen. Ich habe eine Event-Klasse definiert, die einen args-Hash als Parameter akzeptiert. Die Initialisierungsmethode ist unten definiert.

%Vor%

So weit, so gut. Dann definiere ich in der Rails-Konsole einen args-Hash und versuche, eine Instanz von Event zu erzeugen, bekomme aber den folgenden Fehler.

%Vor%

Das scheint sehr einfach zu sein, aber ich habe Probleme, es herauszufinden. Jede Hilfe wird geschätzt.

    
darkmoves 14.04.2014, 00:35
quelle

1 Antwort

12

Wenn Sie einen def initialize -Block für ActiveRecord-erbende Klassen erstellen möchten, müssen Sie super(args) in diesem Block aufrufen, damit die Unterklasse richtig initialisiert wird.

Wenn jedoch what und theme bereits als Spalten in Ihrem Modell vorhanden sind, benötigen Sie die initialize-Methode nicht: Event.new(args) funktioniert einwandfrei.

Eine gute Vorgehensweise wäre es, nur initialize block zu verwenden, wenn Sie Variablen definieren müssen, die in Ihrem ActiveRecord-Schema nicht vorhanden sind (z. B. das Setzen von Instanzvariablen, die keine Persistenz erfordern), aber wenn Sie dies tun müssen, dann ist es das die üblichere Praxis, attr_accessor zu verwenden.

    
SteveTurczyn 14.04.2014, 01:08
quelle

Tags und Links