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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 有关rails中有效数值的自定义错误消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想为我的字段名称提供自定义错误消息.我偶然发现了另一个SO question

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

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

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

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

我试过了@H_403_3@

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

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

解决方法

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

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

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

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

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

编辑:@H_403_3@

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

编辑#2:@H_403_3@

好的,那么:@H_403_3@

  1. protected
  2.  
  3. def validate
  4. if prod_price.blank?
  5. errors.add "Product price can't be blank"
  6. else
  7. begin
  8. Integer(attributes_before_type_cast["prod_price"])
  9. rescue ArgumentError
  10. errors.add "Product price must be a number"
  11. end
  12. end
  13. end

猜你在找的Ruby相关文章