48 lines
1.0 KiB
Ruby
48 lines
1.0 KiB
Ruby
module Validators
|
|
class Base
|
|
|
|
def initialize(model, options={})
|
|
@model = model
|
|
@options = options
|
|
end
|
|
|
|
def validate!
|
|
raise InvalidRecord.new(message) unless valid?
|
|
rescue StandardError => e
|
|
DevopsLogger.logger.error [e.message, e.backtrace].join("\n")
|
|
raise InvalidRecord.new("An error raised during validation with #{self.class}: #{e.class}: #{e.message}")
|
|
end
|
|
|
|
# :nocov:
|
|
def valid?
|
|
raise 'override me'
|
|
end
|
|
|
|
def message
|
|
raise 'override me'
|
|
end
|
|
# :nocov:
|
|
|
|
class << self
|
|
private
|
|
|
|
# this method delegates @valid? and @message methods to helper validator, passed as block
|
|
def delegate_to_helper_validator(&block)
|
|
|
|
define_method :helper_validator do
|
|
@helper_validator ||= self.instance_eval(&block)
|
|
end
|
|
|
|
define_method :valid? do
|
|
self.helper_validator.valid?
|
|
end
|
|
|
|
define_method :message do
|
|
self.helper_validator.message
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|