Ich habe ein Modell Entree, die zu einem Modell Vin gehört, die selbst zu einem Modell Producteur gehört.Initialize Kind Modelle bei der Modellerstellung
Auf dem Formular für Entrese Erstellung/Edition, möchte ich dem Benutzer ermöglichen, die Attribute für Eltern Vin und Producteur zu definieren, um sie zu erstellen, oder abrufen, wenn sie existieren (Abruf basierend auf Benutzereingabe).
Für jetzt habe ich die folgenden in Entree new
und edit
Aktionen ausführen:
@entree = Entree.new
@entree.vin = Vin.new
@entree.vin.producteur = Producteur.new
und fields_for
Helfer in Form verwenden, und das funktioniert. Aber ich beabsichtige, viel mehr Abhängigkeiten mit mehr Modellen zu haben, also möchte ich es DRY behalten. I definierte ein after_initialize
Rückruf in Vin Modell, das die Initialisierung producteur tut:
class Vin < ActiveRecord::Base
after_initialize :vin_setup
def vin_setup
producteur = Producteur.new
end
end
und die producteur.new
von der Steuerung entfernen. Um jedoch einen Fehler auf neue Aktion erhalten:
nicht definierte Methode `model_name‘ für NilClass: Klasse
für die Linie in der Form, die
<%= fields_for @entree.vin.producteur do |producteur| %>
sagt, ich denke, das bedeutet, dass die after_initialize Callback verhält sich nicht so, wie ich es erwarte. Gibt es etwas, das mir fehlt? Außerdem bekomme ich den gleichen Fehler, wenn ich eine after_initialize
Methode im Vin-Modell definiere, anstatt einen Callback zu definieren.
Dank, dass es funktioniert. Ich dachte, da producteur eine definierte Verbindung ist, sollte sie es erkennen. – Antoine