Ich habe ein Objekt mit einem Attribut namens Wert, der vom Typ große Dezimalzahl ist. In der Klassendefinition habe ich validates_numericality_of.Validierung vor Attribut-Setter können Cast
jedoch, wenn i:
a.valid? => true
Wie kommen die Validierung vor der Typumwandlung Feuer:
a.value = 'fire'
‚Feuer‘ landet auf den richtigen Typ ausgelöst wird, bevor die Validierung so typisieren zu werden?
Dank
Dan
Fyi, wenn Sie dies tun möchten, ohne seltsame Validierungsnachrichten in Ihren Ansichten zu bekommen. Z.B. " vor Typumwandlung muss eine Zahl sein" Sie können einen [benutzerdefinierten Validator] (http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators) erstellen, der anstelle von "# {attribute} _before_type_cast" '' checkt Überprüfen Sie nur das Attribut selbst. –
Ajedi32
@ Ajedi32 Oder übergeben: Nachrichtenoption zu Validator? – sheerun
@sheerun Nein, das wird nicht funktionieren, weil die Nachrichtenoption nicht das Attribut ändert, mit dem der Validierungsfehler verknüpft ist. (Z. B. unter " vor dem Typ muss eine Zahl sein"), können Sie nur diese Option verwenden, um den Teil "Teil einer Nachricht" zu ändern. –
Ajedi32