【问题标题】:Rails 4 Change the standard Active Model Validation messagesRails 4 更改标准的活动模型验证消息
【发布时间】:2016-04-02 07:16:17
【问题描述】:

http://api.rubyonrails.org/classes/ActiveModel/Validations.html

您将如何更改验证消息? 如果我想让它回馈海盗信息。

像这样:

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

还有其他提示或建议吗?

【问题讨论】:

  • “在每条消息中添加一个有趣的词,而不是单独执行”,例如?

标签: ruby validation ruby-on-rails-4 activemodel


【解决方案1】:

对于自定义验证,我一直在 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 %>
    

【讨论】:

  • 谢谢。 :) @Cyril Duchon-Doris
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多