我的表格中有字段zip_code
。我已在相应模型中为字段提供了验证,如下所示:
validates :zip_code, :length => { :minimum => 5, :maximum => 6 }, :numericality => true, allow_blank: true
该字段是表中的整数。当我尝试输入'01234'之类的值时,它不接受它并给出如下错误:
zip code is too short (minimum is 5 characters)
如果有人能够解决这个问题,那将会非常有帮助。
答案 0 :(得分:5)
你知道, zip_code 不应该是一个数字。它应该是一个格式为数字的字符串。就像您在问题中评论过的人一样,您需要将zip_code列更改为字符串类型。为它写一个新的迁移:
rails g migration change_model_zip_code_type
然后在迁移中:
def change
change_column :my_table, :zip_code, :string
end
然后输入您的控制台:
rake db:migrate
现在您可以将邮政编码验证为数字字符串:
validates :zip_code, :length => { :minimum => 5, :maximum => 6 }, :format => { with: /[0-9]+/ }
答案 1 :(得分:2)
您可以尝试使用以下代码:
validates_length_of :zip_code, :in => 5..6, :allow_blank => true