我正在尝试弄清楚如何在将加拿大邮政编码存储到Rails数据库中之前对其进行验证。但是我不想在验证中使用正则表达式来做。我想存储一个以某些字符开头的现有邮政编码,然后不关心后面的内容,只要初始字符与我设置的字符匹配即可。
例如,如果有人输入V7C2X2
,V7C1X1
或V7B1X1
,它应该接受,因为它以字符V7C
或V7B
开头。它应该拒绝任何不以V7C
或V7B
开头的条目。
我现在有这个:
class Postal < ApplicationRecord
validates_inclusion_of :postalcode, :in => ["V7C", "V7B"]
end
您可以使用自定义验证器。
class Postal < ApplicationRecord
validate :code_includes
private
def code_includes
["V7C","V7B"].include? postalcode
end
end
这只会检查邮政编码是否在任何地方都有这两个字符串中的一个作为子字符串。
要检查邮政编码以您可以选择的两个开头之一
class Postal < ApplicationRecord
validate :code_starts_with
private
def code_starts_with
postalcode.start_with?("V7C","V7B")
end
end
签出validates_format_of。您可以执行以下操作:
validates_format_of :postalcode, with: /^(V7B|V7C)/
也可以不带:/ ** /