在多个字段上的验证失败时显示相应的错误消息

时间:2013-10-27 00:48:12

标签: ruby-on-rails validation

我在Product模型上设置了验证规则,以检查两个字段(名称和数量)是否唯一。例如,你可以拥有

  • Oreos 12-pack
  • Oreos 100-pack

两者都是有效的条目。但是,您不能拥有两个Oreos 100-pack记录。

我已经使用此问题中描述的方法来设置规则(Validate uniqueness of multiple columns),但是默认错误消息只是突出显示第一个字段并表示已经采用了该字段,但是没有准确地将问题描述为用户试图插入产品信息。

如果这是验证多个字段唯一性的一般Rails解决方案,我如何根据哪个规则失败来适当地设置验证消息。

如果有其他解决方案会自动显示相应的错误消息,那会是什么?

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。假设您的模型设置如下:

class Product < ActiveRecord::Base
  ...
  validates_uniqueness_of :quantity, scope: :name
  ...
 end
  1. 使用本地化文件。这是执行此操作的首选方法。在您的config / locales / en.yml(或您所在的任何区域设置)中,执行以下操作:

    product:
      attributes:
        quantity:
          taken: "Product and quantity are not unique. And, Oreo's are delicious."
    
  2. 不太喜欢的方式,但仍然应该直接在验证本身。

    validates_uniqueness_of :quantity, scope: :name, message: "Product and quantity are not unique. And, Oreo's are delicious."