Wie übergeben Sie willkürliche Werte (nicht Modellattribute) an eine Schiene?

8

Ich habe ein unidirektionales Beziehungsmodell zwischen Benutzern (Benutzer haben viele Beziehungen), das die IDs von zwei gegebenen Benutzern zusammen mit dem Spitznamen von Benutzer a für Benutzer b enthält. Ich möchte ein Formular verwenden, um Benutzern zu ermöglichen, eine E-Mail-Adresse eines anderen Benutzers und den Spitznamen einzugeben. Wenn ein Benutzer mit dieser E-Mail vorhanden ist, erstellen Sie eine Beziehung zwischen den Benutzern. Wenn kein Benutzer übereinstimmt, erstellen Sie einen neuen Phantombenutzer mit dieser E-Mail, und erstellen Sie dann die Beziehung.

Ich bin relativ neu bei Schienen und habe zunächst naiv versucht, das Basic zu verwenden:

%Vor%

Dies schlägt fehl, weil das Beziehungsmodell kein E-Mail-Attribut enthält. Ich habe dann folgendes versucht und dachte, es könnte funktionieren, weil es nicht direkt auf das Beziehungsmodell Bezug genommen hat.

%Vor%

Aber das wirft einen Fehler "falsche Anzahl von Argumenten (1 für 2)"

Ich könnte dem Beziehungsmodell ein E-Mail-Feld hinzufügen, aber es wird nicht benötigt, außer wenn ich es zum Nachschlagen des gewünschten Benutzers verwende. Mein Plan war, die E-Mail- und Nickname-Werte zu verwenden, die an die create-Aktion im Beziehungs-Controller übergeben wurden, um entweder die Beziehung zu erstellen oder einen neuen Benutzer und dann die Beziehung abhängig vom Fall zu erstellen. Wie kann ich also beliebige Werte an eine Controller-Aktion übergeben?

    
Mischawaka 14.07.2012, 22:04
quelle

1 Antwort

11

Verwenden Sie das erste Formular, und erstellen Sie einfach ein attr_accessor in Ihrem Modell das E-Mail-Attribut.

Das macht im Grunde eine temporäre Variable, die Sie von etwas wie einem Formular ableiten können, aber es wird nicht in der Datenbank gespeichert.

%Vor%     
Trip 14.07.2012, 22:14
quelle

Tags und Links