加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 有关rails中有效数值的自定义错误消息

发布时间:2020-12-16 19:02:42 所属栏目:百科 来源:网络整理
导读:我想为我的字段名称提供自定义错误消息.我偶然发现了另一个SO question 所以我添加了这样的东西: class Product ActiveRecord::Base validate do |prod| prod.errors.add_to_base("Product price can't be blank") if prod.prod_price.blank? endend 但我也
我想为我的字段名称提供自定义错误消息.我偶然发现了另一个SO question

所以我添加了这样的东西:

class Product < ActiveRecord::Base
  validate do |prod|
    prod.errors.add_to_base("Product price can't be blank") if prod.prod_price.blank?
  end
end

但我也想检查prod_price的数字.如果我只是添加
validate_numericality_of:prod_price和产品价格为空,然后两个错误消息都显示出来(空且不是数字).

如果产品价格不为空,我怎么才能显示’不是数字’错误消息?

我试过了

class Product < ActiveRecord::Base
  validate do |prod|
    prod.errors.add_to_base("Product price can't be blank") if prod.prod_price.blank?
    if !prod.prod_price.blank?
       prod.errors.add_to_base("Product price must be a number") if prod.prod_price.<whatdo i put here>
    end
  end
end

另外,如何为“不是数字”设置自定义消息.我想隐藏向用户显示我的列名.

解决方法

您可以拥有自定义消息,而无需编写自己的验证方法.只需添加:消息:

validates_presence_of:prod_price,:message => “产品价格不能空白”

如果您想在prod_price不存在时跳过数值验证,请添加:allow_nil:

validates_presence_of:prod_price,:message => “产品价格不能空白”
validates_numericality_of:prod_price,: allow_nil =>真正

然后,当缺少prod_price时,数字检查将不会运行.

编辑:

等等,你不希望字段名出现在错误信息中,对吗?我错过了.所以你毕竟需要自定义验证.

编辑#2:

好的,那么:

protected

def validate
  if prod_price.blank?
    errors.add "Product price can't be blank"
  else
    begin
      Integer(attributes_before_type_cast["prod_price"])
    rescue ArgumentError  
      errors.add "Product price must be a number"
    end
   end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读