Как использовать валидатор чисел в Rails для проверки числа между максимальными числами 2 минуты? - PullRequest
1 голос
/ 08 января 2012

Я пытаюсь написать приложение для рельсов, которое включает географические значения широты и долготы, и я написал для этого подтверждение ниже:

validates :latitude, numericality: {greater_than_or_equal_to: -89.9999, less_than_or_equal_to: 89.9999}, allow_nil: true

Примечание: широта и долготадесятичные значения с точностью: шкала 6: 4 и шкала точности 7: 4 соответственно.(Широта изменяется от -90 до 90 (исключая), а долгота изменяется от -180 до 180 (включительно))

Однако этот код передает -90 и 90 соответственно, когда он фактически должен завершиться сбоем.Требуется ли для проверки численности более 1 аргумента, как указано выше?Как мне правильно написать эту проверку?

Спасибо.

РЕДАКТИРОВАТЬ: Я посмотрел документацию для валидатора, и он проверяет только:

{ :greater_than => :>, :greater_than_or_equal_to => :>=, :equal_to => :==, :less_than => :<, :less_than_or_equal_to => :<=, :odd => :odd?, :even => :even? }

Поэтому я предположил, что способ, которым я использовал его выше, будет работать.

1 Ответ

2 голосов
/ 08 января 2012

Я не могу воспроизвести эту проблему:

# Code

require 'rails'

class Testing
  attr_accessor :number
  include ActiveModel::Validations

  validates :number, numericality: {
    greater_than_or_equal_to: -89.999, less_than_or_equal_to: 89.999
  }
end

[89, 89.999, 90, 90.001].each do |n|
  t = Testing.new
  t.number = n
  puts "#{n} valid: #{t.valid?}"
end

# Output

89 valid: true
89.999 valid: true
90 valid: false
90.001 valid: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...