2016-03-19 14 views
0

Bei einer Modellvalidierung wieWie die Validierungswerte für ein Rails Modell

validates :my_number, 
    numericality: { 
    greater_than_or_equal_to: 1, 
    less_than_or_equal_to: 300 
    } 

Wie kann ich lesen und zum Beispiel zurückzukehren diese Werte in der Ansicht anzeigen?

MyModel.validators_on(:my_number).first.options[:on_or_before] 

scheint sich zu nähern. Aber das gibt eine Dateizeilenreferenz zurück, und ich bin mir nicht sicher, wie man das manipuliert, um einen Wert zurückzugeben.

#<Proc:[email protected]/Path/To/Project/app/models/my_model.rb:128 (lambda)> 

Gibt es eine bequeme Möglichkeit, diese Validierungswert für den Zugriff auf und in der Ansicht, etwas zu tun wie

<p>This value must be between <%= @model.my_number.validation_greater_than %> and <%= @model.my_number.validation_less_than %></p> 

Antwort

0

ich die Grenzen 1 & 300 in Konstanten auf dem Modell gesetzt würde und sie dann in dem Zugriff Ansicht wie:

... <%= ModelClass::MAX_MY_NUMBER % ... <%= ModelClass::MINIMUM_MY_NUMBER %> ... 

und in der Modellvalidierung wie:

validates :my_number, 
    numericality: { 
    greater_than_or_equal_to: MINIMUM_MY_NUMBER, 
    less_than_or_equal_to: MAX_MY_NUMBER 
    } 
+0

Dank @lazarus, das ist eine gute Idee. Edelsteine ​​wie simple_form können jedoch Max-/Min-Werte für ein ganzzahliges Feld festlegen, indem sie die Validierungsgrenzen erkennen. Ich frage mich, wie dieses Juwel das erreicht? Ich konnte es (noch) nicht aus der Quelle herausfinden, werde es aber weiter prüfen. –

Verwandte Themen