Ruby on rails Rails-根据其他字段验证输入的唯一性
我试图验证一个字段相对于同一记录上其他字段的唯一性 例如,我有10个输入(假设它们被命名为field1、field2、field3等),每个字段都需要是数字1-10。我不希望用户能够在输入中重复输入同一个数字两次Ruby on rails Rails-根据其他字段验证输入的唯一性,ruby-on-rails,forms,validation,unique,Ruby On Rails,Forms,Validation,Unique,我试图验证一个字段相对于同一记录上其他字段的唯一性 例如,我有10个输入(假设它们被命名为field1、field2、field3等),每个字段都需要是数字1-10。我不希望用户能够在输入中重复输入同一个数字两次 我是否需要按照“如果字段1显示错误!”创建自定义验证字段2!=field3等,或者是否有内置方式提供所有要检查的字段列表?Activerecord没有定义的验证来执行此操作 您必须在行上创建自定义验证 def model ATTRS_TO_VALIDATE = ['attr1',
我是否需要按照“如果字段1显示错误!”创建自定义验证字段2!=field3等,或者是否有内置方式提供所有要检查的字段列表?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
希望这能解决你的问题你能解释一下吗?我不理解这部分-除非self.attributes.select{k,v|ATTRS_TO_VALIDATE.include?(k)}.values.uniq.length==ATTRS_TO_VALIDATE.length error.add(“字段需要是uniq”)ATTRS_TO_VALIDATE是需要验证的属性数组。该语句只选择要检查其唯一性的所有属性的键、值对。然后我们获取这些值,然后只获取唯一值,并将唯一值的长度与ATTRS_的长度进行比较。如果长度小于,则表示字段中有类似的值