2016-04-02 8 views
2

http://api.rubyonrails.org/classes/ActiveModel/Validations.htmlRails 4 Ändern Sie die Standard-Aktiv Modellvalidierung Nachrichten

Wie würden Sie die Nachricht Validierung ändern? Wenn ich es eine Piratenmeldung zurückgeben wollte.

So:

validates_presence_of :blank (“can’t be blank”) 

würde stattdessen sein:

validates_presence_of :blank (“can’t be blank, walk the plank“) 

Weiter mehr, wenn ich wollte ein Skript auf alle Fehlermeldungen führen ein lustiges Wort zu jeder Nachricht hinzuzufügen, ohne jede zu tun individuell; Wie würden Sie das vorschlagen? Ich möchte sie für alle folgenden Bestätigungen tun.

ActiveModel :: Validierungen

activemodel/lib/active_model/validations.rb 
activemodel/lib/active_model/validations/absence.rb 
activemodel/lib/active_model/validations/acceptance.rb 
activemodel/lib/active_model/validations/callbacks.rb 
activemodel/lib/active_model/validations/clusivity.rb 
activemodel/lib/active_model/validations/confirmation.rb 
activemodel/lib/active_model/validations/exclusion.rb 
activemodel/lib/active_model/validations/format.rb 
activemodel/lib/active_model/validations/inclusion.rb 
activemodel/lib/active_model/validations/length.rb 
activemodel/lib/active_model/validations/numericality.rb 
activemodel/lib/active_model/validations/presence.rb 
activemodel/lib/active_model/validations/validates.rb 
activemodel/lib/active_model/validations/with.rb 

Es scheint, ich verwenden würde: http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html

class Comment 
    include ActiveModel::Validations 

    validate do 
    errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee) 
    end 
end 

Jede andere Tipps oder Anregungen?

+0

"Fügen Sie jeder Nachricht ein lustiges Wort hinzu, ohne jedes einzeln zu machen", Beispiel? –

Antwort

0

Für benutzerdefinierte Validierungen habe ich dies mit I18n verwendet. Ich glaube, es sollte ein lustiges Wort zu jeder Nachricht die gleiche Art und Weise für normale Nachrichten arbeiten

# models/user.rb 
validate :some_validation 

def some_validation 
    errors.add(:base, :custom_validation_translation_sym) 
end 

# config/locales/en.yml (examplewith mongoid) 
mongoid: 
    errors: 
     models: 
     user: 
      attributes: 
      base: 
       custom_validation_translation_sym: Your translation goes here ! 

hinzufügen, ohne jede einzeln

zu tun
  1. Sie konnten die ActiveModel außer Kraft setzen, die Fehler Strings Umgang
  2. In Ihren Ansichten verhindert nichts, wenn Sie Modellfehler zeigen, dass Sie mit den Strings

    spielen 0
+0

Danke. :) @ Cyril Duchon-Doris – jendiamond