rails中的自定义数值验证

时间:2015-04-11 12:41:28

标签: ruby-on-rails validation numbers

我需要为接受的数字添加自定义验证选项,和。作为分隔符并提供本地化的错误消息,而字段本身是一个字符串。

1 个答案:

答案 0 :(得分:0)

我在模型中创建了一个自定义验证,这意味着我可以访问字段名称(在这种情况下是平均值和grade_scale)

validate :average_valid_number

def average_valid_number
    avg = average.gsub("," , ".")
    case avg
    when /\A0[xX]/
      errors.add(:average, :not_a_number)
    else
      begin
        Kernel.Float(avg)
      rescue
        errors.add(:average, :not_a_number)
      end
      if grade_scale == "CH"
        errors.add(:average, :greater_than_or_equal_to, options = {:count => 4}) if avg.to_f < 4
        errors.add(:average, :less_than_or_equal_to, options = {:count => 6}) if avg.to_f > 6                
      end
    end      
end