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