Я пытаюсь использовать ActiveModel Validations & Callbacks для пользовательского класса.
class TestClass
include ActiveModel::Validations
define_model_callbacks :validate
attr_accessor :test_field
validates :test_field, presence: true # THIS IS CAUSING ISSUES!
before_validate do
test_field.try('upcase!')
end
def custom_validate!
run_callbacks :validate do
puts "Done"
end
end
end
Но я получаю следующую ошибку:
Failure/Error:
run_callbacks :validate do
...
end
NoMethodError:
undefined method `before_validate' for #<ActiveModel::Validations::PresenceValidator>
Если я изменяю имя обратного вызова на что-то другое, чем validate
(например, validate_x
), это работает. Очевидно, validate
делает немного больше, чем я ожидал. Эта ошибка возникает, только если определено validates :test_field, presence: true
. Для пользовательских блоков before_validate {}
это не вызывает ошибок. Есть идеи как это исправить?