2016-04-02 2 views
2

http://api.rubyonrails.org/classes/ActiveModel/Validations.htmlRails 4 Изменить стандартное Активные модели Validation сообщение

Как изменить сообщение проверки? Если бы я хотел заставить его вернуть пиратское сообщение.

Как это:

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

бы вместо того, чтобы быть:

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

Более того, если бы я хотел, чтобы запустить скрипт на всех сообщений об ошибках, чтобы добавить смешное слово к каждому сообщению, не делая каждый индивидуально; Как вы предлагаете это сделать? Я хочу сделать их для всех утверждений ниже.

ActiveModel :: Validations

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

Спасибо. :) @ Кирилл Дюшон-Дорис – jendiamond

 Смежные вопросы

  • Нет связанных вопросов^_^