成功验证后的数据转换
-
08-10-2019 - |
题
我对UPC字符串代码进行标准化有一些问题,因此我可以在数据库中以相同的格式存储它。
我正在使用 ean
gem可以检查字符串是否不错(正常工作),但是如果我在验证之后抛出一些分配代码,例如:
validate :upc_check
def upc_check
if !upc.nil?
if !upc.ean?
errors.add(:upc, 'is not a valid UPC.')
else
upc = upc.strip
end
end
end
脱衣声只是一个示例,因为它是字符串。实际上,我将删除UPC中的破折号。
上面的代码不能很好地工作,因为它实际上并不能保存它。我看了触发这样的方法
after_validation :normalize_upc
def normalize_upc
upc = upc.strip
end
..但是以上也不起作用。
你们在验证后如何验证和转换数据?
解决方案
我将使验证器严格,然后使用tore_validation过滤器进行任何必要的转换。
其他提示
我建议您在模型中为UPC覆盖设置方法,而没有单独的方法来归一化。这将通过类似:
def upc=(value)
self.upc = value.strip
end
编辑:
我还将清理您的验证方法,以删除此功能:
validate :upc_check, :unless => lambda {|m| m.upc.nil?}
def upc_check
errors.add(:upc, 'is not valid') unless upc.ean?
end
不隶属于 StackOverflow