我对Rails有点陌生,我正在尝试了解自定义验证。
巴西的一个共同要求是CPF/CNPJ/RG油田。它们是一种标识号,遵循特定格式。
例如:
cpf是11位数字。它们遵循以下模式:xxx.xxx.xxx-xx
我试图将它们存储在整数字段中,但我得到(使用Postgres):
PG::错误:错误:值“xxxxxxxxxx”超出类型的范围
整数
储存这个东西的正确方法是什么?Bigint(如何?)一根绳子?
我的第二个问题是:
如何为该字段指定自定义验证(方法),该字段的调用方式如下:
class User < AR::Base
validates :cpf, presence: true, unique: true, cpf: true
最佳答案
假设性能不是关键,字符串就可以了。这样你可以保留点和破折号。正如其他人在本文中提到的,bigint
或numeric
可能更有效,如果这是一个问题的话。
如果将字段保留为字符串,则可以使用regex轻松验证它:
validates_format_of :cpf, with: /^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}$/
关于ruby-on-rails - 大整数和自定义验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17034362/