Rails - 验证输入对其他字段的唯一性

时间:2013-11-29 17:38:35

标签: ruby-on-rails forms validation unique

我正在尝试验证字段对同一记录中其他字段的唯一性。

例如,我有10个输入(假设它们被命名为field1,field2,field3等),每个字段需要为1-10。我不希望用户能够在输入中使用相同的数字两次。

我是否需要按照显示错误的方式创建自定义验证,如果field1!= field2!= field3等,或者是否有建立方式来提供所有字段列表?

1 个答案:

答案 0 :(得分:0)

Activerecord没有定义的验证来执行此操作。

您必须在

行创建自定义验证
def model
  ATTRS_TO_VALIDATE = ['attr1', 'attr2', 'attr3']
  attributes_accessible :attr1, :attr2, :attr3
  validate :custom_validation

  def custom_validation
    unless self.attributes.select{|k,v| ATTRS_TO_VALIDATE.include?(k)}.values.uniq.length == ATTRS_TO_VALIDATE.length
      error.add("fields need to be uniq")
    end
  end
end

希望这能解决您的问题