2016-04-02 5 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

関連する問題