仅验证数字

Joh*_*ith 9 validation ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

在我的一个导轨模型中,我有这个:only_integer验证:

validates :number, presence: true, numericality: { only_integer: true }
Run Code Online (Sandbox Code Playgroud)

此验证还允许+82938434使用+-signs 等输入.

我应该使用哪种验证来仅允许输入而+ -不仅仅是数字?

Eri*_*nil 11

文档only_integer提到了这一点正则表达式:

/\A[+-]?\d+\z/
Run Code Online (Sandbox Code Playgroud)

这意味着你可以使用:

validates :number, format: { with: /\A\d+\z/, message: "Integer only. No sign allowed." }
Run Code Online (Sandbox Code Playgroud)


mec*_*cov 5

Rails 7向验证器添加了 :only_numeric选项numericality

validates :age, numericality: { only_numeric: true }
Run Code Online (Sandbox Code Playgroud)
User.create(age: "30") # failure
User.create(age: 30) # success
Run Code Online (Sandbox Code Playgroud)