验证Rails中的值

tre*_*065 2 ruby activerecord ruby-on-rails

我试图验证一个浮点数,该浮点数可以在1到6.5之间,但只增加.5所以{1,1.5,2.0,2.5,3,3.5,4,4.5,5,5.5,6,6.5}.有没有办法在rails中验证这一点.到目前为止,我有:

validates :value, :inclusion => 1..6.5, is_value_valid => true

def is_value_valid
  if self.value % 0.5 == 0
    true
  else
    false
  end
end
Run Code Online (Sandbox Code Playgroud)

我在测试时遇到错误,我不认为这是你调用is_value_valid方法的方式.

raf*_*kin 6

您可以使用自定义方法对其进行验证,因此完整验证应如下所示:

validates :value, :inclusion => {:in => 1..6.5}
validate :value_is_multiple_of_point_five

def value_is_multiple_of_point_five
    unless value % 0.5 == 0
        errors.add(:value, "must be multiple of 0.5")
    end
end
Run Code Online (Sandbox Code Playgroud)