Rails验证小于0或大于0,或者字段不等于0

时间:2016-04-14 19:39:29

标签: ruby-on-rails

我已为less_thangreater_than的Rails模型添加了验证,但它们显然相互冲突。

我想确保Rails验证模型上的字段永远不会为0.所以小于0的OR,但不是两者都是因为那是不可能的。

我该怎么做?

3 个答案:

答案 0 :(得分:24)

已经有一个名为numericality

的验证器

http://edgeguides.rubyonrails.org/active_record_validations.html#numericality

class Player < ApplicationRecord
  validates :salary, numericality: { other_than: 0 }
end

答案 1 :(得分:4)

validate :non_zero

def non_zero
  if self.field_name == 0
     self.errors.add(:field_name, "Field can't be zero")
  end
end

答案 2 :(得分:0)

validates :field, exclusion: { in: [0] }

https://guides.rubyonrails.org/active_record_validations.html#exclusion

适用于允许nil值的字段;易于测试