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