ActiveRecord - замените ошибку проверки допустимости модели предупреждением

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

class Person < ActiveRecord::Base
  # normal validation
  validates_presence_of :name

  # validation with warning
  validates_numericality_of :age, 
                            :only_integer => true, 
                            :warning => true # <-- only warn
end

>>> p = Person.new(:name => 'john', :age => 2.2)
>>> p.save
=> true # <-- able to save to db
>>> p.warnings.map { |field, message| "#{field} - #{message}" }
["age - is not a number"] # <-- have access to warning content

Какая-либо идея, как я мог реализовать это? Я смог добавить :warning => false значение по умолчанию к ActiveRecord::Validations::ClassMethods::DEFAULT_VALIDATION_OPTIONS Путем расширения модуля, но я ищу некоторое понимание о том, как реализовать остальных.Спасибо.

10
задан sa125 27 July 2010 в 09:58
поделиться