Eine Möglichkeit, die vollständige Kontrolle über die Nachrichten haben, ist eine benutzerdefinierte validate
Block im Modell zu verwenden. z.B. um zu überprüfen, dass ein Feld nicht leer ist, würde es so aussehen:
class MyModel < ActiveRecord::Base
validate do |model|
model.errors.add_to_base("My Custom message") if user.field.blank?
end
end
add_to_base
soll für das Hinzufügen von Nachrichten, die nicht an einen bestimmten einzelnen Feld verbunden sind (zum Beispiel, wenn eine Kombination aus mehreren Feldern illegal ist). Dies bedeutet, dass das CSS zum Hervorheben Ihres ungültigen Felds nicht hinzugefügt wird. Sie können in der Umgebung arbeiten, indem Sie den Fehlern für Ihr Feld auch eine Nullnachricht hinzufügen, z.
model.errors.add(:field, nil)
Alternativ Besuche custom-err-message Plugin - dieses Plugin haben Sie die Möglichkeit nicht Ihre benutzerdefinierten Validierung Fehlermeldung mit dem Attributnamen vorangestellt haben.
Update:
add_to_base
ist seit Rails veraltet 3. Folgende kann stattdessen verwendet werden: model_instance.errors.add(:base, "Msg")
Ref: https://apidock.com/rails/ActiveRecord/Errors/add_to_base
Prost mikej, das custom-err-message plugin hat genau das gemacht, was ich wollte – pythonandchips
Es gibt auch ein [Juwel] (https://github.com/thethanghn/custom-err-msg), das für mich in Rails 4 funktioniert hat – dusan