Validierung, bevor Attribut-Setzer Cast eingeben können

8

Ich habe ein Objekt mit einem Attribut namens Wert, das vom Typ große Dezimalzahl ist. In der Klassendefinition habe ich validates_numericality_of.

Aber wenn ich:

%Vor%

'fire' endet mit der Typumwandlung in den richtigen Typ, bevor die Validierung ausgelöst wird:

%Vor%

Wie kann die Validierung vor der Typumwandlung ausgelöst werden?

Danke

Dan

    
Dan Galipo 22.09.2010, 05:35
quelle

2 Antworten

14

Von ActiveRecord :: Base-Dokumentation :

  

Manchmal möchten Sie lesen können   die rohen Attributdaten ohne zu haben   die spaltenbestimmte Typumwandlung läuft   Natürlich zuerst. Das kann gemacht werden durch   mit dem <attribute>_before_type_cast   Accessoren, die alle Attribute haben.   Zum Beispiel, wenn Ihr Account Modell hat   ein Balance-Attribut, das Sie anrufen können    account.balance_before_type_cast oder    account.id_before_type_cast .

     

Dies ist besonders nützlich in   Validierungssituationen, in denen der Benutzer   könnte eine Zeichenfolge für eine ganze Zahl liefern   Feld und Sie möchten das anzeigen   ursprüngliche Zeichenfolge zurück in einem Fehler   Botschaft. Zugriff auf das Attribut   normalerweise würde die Zeichenfolge zu typisieren   0, was nicht das ist, was du willst.

    
Mladen Jablanović 22.09.2010 06:13
quelle
1

Ein neues Schmuckstück wurde erstellt, um Typen in Schienen zu validieren .

Ein erklärender Blogbeitrag existiert, um mehr von dem "Warum" zu beantworten, in dem er erstellt wurde erster Platz.

Mit dieser Bibliothek könnte Ihr Code sein:

%Vor%

Dies wird eine Ausnahme auslösen, wenn alles außer einem Float value zugewiesen wird, anstatt das value ruhig in ein BigDecimal umzuwandeln und es zu speichern.

    
yez 12.08.2015 22:28
quelle