Проверяет данные в модели Rails 3.1 - PullRequest
0 голосов
/ 08 февраля 2012

В моем приложении используются две переменные, чтобы делать заметки о времени начала и окончания гарантии на продукт, поэтому, на мой взгляд, я использую два раскрывающихся меню для выбора времени начала и окончания.Теперь я должен быть уверен, что время начала не должно превышать время окончания.Как я могу смоделировать это ограничение?Я попытался использовать следующий код в файле модели:

  validates_numericality_of :warranty_end, :greater_than => :warranty_start 

, но я видел, что он не работает!Есть предложения?

Ответы [ 3 ]

0 голосов
/ 09 февраля 2012

Это должно работать (по крайней мере, в 3.2).Из документов на http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html:

validates_numericality_of :width, :less_than => Proc.new { |person| person.height } 
validates_numericality_of :width, :greater_than => :minimum_weight
0 голосов
/ 09 февраля 2012

Спасибо, Азоло, теперь все работает!Единственное, что вы удаляете оператор validates_numericity_of :ranty_end, поэтому рабочий код для меня:

validate :warranty_end_less_than_warranty_start

...

def warranty_end_less_than_warranty_start
  unless warranty_end > warranty_start
    errors.add :warranty_end, "must be before the warranty starting date"
  end
end

Еще раз всем спасибо

0 голосов
/ 09 февраля 2012

Я не думаю, что вы можете использовать переменные в validates таким образом, но вы можете создать собственный валидатор, подобный этому

validates_numericality_of :warranty_end
validate :warranty_end_less_than_warranty_start

...

def warranty_end_less_than_warranty_start
  unless warranty_end > warranty_start
    errors.add :warranty_end, "must be before the warranty starting date"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...