我正在尝试从 Rails 引擎加载一些自定义验证器,但由于无法识别验证器,我的应用程序一直失败。
在引擎中初始化验证器的正确方法和时间是什么?
例如我有:
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'