仅当存在(如果用户填写)无效时才验证数字

Joh*_*ria 4 ruby-on-rails ruby-on-rails-4

我遵循一些提示,仅在存在时验证字段的数字性,使用:

validates_numericality_of :year, only_integer: true, allow_nil: true
Run Code Online (Sandbox Code Playgroud)

或者

validates_numericality_of :year, only_integer: true, allow_blank: true
Run Code Online (Sandbox Code Playgroud)

但是我可以用类似的年份来创建它,'asdfasdf'而 rails 可以存储空白的年份。

有什么问题?

PJ *_*ron 5

而不是allow_nil: true,使用allow_blank: true

您还应该在您的视图中替换text_fieldnumber_field。使用number_field,如果您的字符不仅仅是数字,则将其评估为 nil。