Ruby on rails 如何仅允许/验证以特定字符开头的字符串?
我正在试图弄清楚如何在加拿大邮政编码存储到rails数据库之前验证它们。但我不想在验证中使用正则表达式。我想存储一个现有的邮政编码,从某些字符开始,然后不管后面是什么,只要初始字符与我设置的字符匹配 例如,如果有人输入V7C2X2、V7C1X1或V7B1X1,它应该接受它,因为它以字符V7C或V7B开头。它应该拒绝任何不以V7C或V7B开头的条目 我现在有这个:Ruby on rails 如何仅允许/验证以特定字符开头的字符串?,ruby-on-rails,ruby,validation,Ruby On Rails,Ruby,Validation,我正在试图弄清楚如何在加拿大邮政编码存储到rails数据库之前验证它们。但我不想在验证中使用正则表达式。我想存储一个现有的邮政编码,从某些字符开始,然后不管后面是什么,只要初始字符与我设置的字符匹配 例如,如果有人输入V7C2X2、V7C1X1或V7B1X1,它应该接受它,因为它以字符V7C或V7B开头。它应该拒绝任何不以V7C或V7B开头的条目 我现在有这个: class Postal < ApplicationRecord validates_inclusion_of :posta
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
这将检查postalcode是否将这两个字符串中的任意一个作为子字符串
要检查postalcode是否从这两个选项中的一个开始,您可以执行以下操作
class Postal < ApplicationRecord
validate :code_starts_with
private
def code_starts_with
postalcode.start_with?("V7C","V7B")
end
end
签出验证的格式。您可以执行以下操作:
validates_format_of :postalcode, with: /^(V7B|V7C)/
也不需要:/**/