2016-04-02 51 views
2

http://api.rubyonrails.org/classes/ActiveModel/Validations.html軌道4改變標準活動模型驗證消息

你將如何更改驗證消息? 如果我想讓它回饋海盜信息。

像這樣:

validates_presence_of :blank (「can’t be blank」) 

將改爲:

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

進一步,如果我想對所有的錯誤信息運行腳本以一個有趣的單詞添加到每個消息沒有做各獨立; 你會如何建議這樣做?我想爲他們做下面的所有驗證。

::加載ActiveModel驗證

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 

看來我要用: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 

任何其他提示或建議?

+0

「爲每個消息添加一個有趣的單詞而不單獨做每個消息」,例如? –

回答

0

對於自定義驗證,我一直在使用這與I18n。我認爲它應該工作以同樣的方式進行正常的消息

# 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 ! 

添加一個有趣的詞,以每封郵件沒有做各自單獨

  1. 您可以覆蓋加載ActiveModel處理串的錯誤
  2. 在您的觀點中,當您顯示模型錯誤時,沒有任何東西阻止您玩弄字符串

    <% @model.errors.full_messages.each do |msg| %> 
    
    <%= "Funny string"+msg %> 
    
    <% end %> 
    
+0

謝謝。 :) @Cyril Duchon-Doris – jendiamond