Я пытаюсь загрузить некоторые пользовательские валидаторы из Rails Engine, но мое приложение продолжает отказывать из-за того, что валидатор не распознается.
Как правильно и в какое время инициализировать валидаторы в двигателе?
Например, у меня есть:
class NullityValidator < ActiveModel::EachValidator
# Validates whether <tt>value</tt> is <tt>nil?</tt>.
def validate_each(record, attribute, value)
record.errors.add(attribute, :not_nil) unless value.nil?
end
end
Из моего класса двигателей Engine < Rails::Engine
Я пробовал несколько разных способов инициализации пользовательских валидаторов, таких как:
config.before_initialize do
class NullityValidator < ActiveModel::EachValidator
end
end
config.after_initialize do
class NullityValidator < ActiveModel::EachValidator
end
end
initializer 'ab_gem.validators' do |app|
ActiveSupport.on_load :active_model do
class NullityValidator < ActiveModel::EachValidator
end
end
end
initializer 'ab_gem.validators' do |app|
ActiveSupport.on_load :active_record do
class NullityValidator < ActiveModel::EachValidator
end
end
end
initializer 'ab_gem.validators' do |app|
class NullityValidator < ActiveModel::EachValidator
end
end
Я также пытался переместить их в пользовательский модуль для загрузки, но ни один из этих методов не инициализируется / загружается правильно.
Каждый раз, когда загружается модель моего приложения, я получаю Unknown validator: 'NullityValidator'