Ruby on rails上的自定义验证消息

时间:2015-04-23 01:08:25

标签: ruby-on-rails ruby

我有一个名为user.rb的模型。此模型具有自定义的电子邮件验证:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable #,:validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  validates_presence_of :email,:message=>"El campo email is requerido"

end 

问题是浏览器显示“电子邮件 El campo电子邮件是requerido”,而我想要“El campo电子邮件是requerido”(之前没有电子邮件)。

2 个答案:

答案 0 :(得分:0)

对于比3.2.2更新的Rails,它使用国际化中定义的errors.format来构建验证完整消息。

我相信你无法改变一个属性的行为,但如果想要为整个应用程序执行此操作,您可以在Customise ActiveModel full_messages

上关注我的回答

另一种方法是直接将消息定义到记录base,以便可以按原样打印:

validate do |user|
  user.errors.add :base, 'El campo email is requerido' if user.email.blank?
end

此外,拉开请求已打开,可在属性级别https://github.com/rails/rails/pull/14260

上提供解决方案

答案 1 :(得分:0)

您可以使用I18n将电子邮件的翻译更改为“El campo email”

activerecord:
    attributes:
      user:
        email: "El campo email"