43 lines
798 B
Ruby
43 lines
798 B
Ruby
module Validators
|
|
class Base
|
|
|
|
def initialize(model, options={})
|
|
@model = model
|
|
@options = options
|
|
end
|
|
|
|
def validate!
|
|
raise InvalidRecord.new(message) unless valid?
|
|
end
|
|
|
|
def valid?
|
|
raise 'override me'
|
|
end
|
|
|
|
def message
|
|
raise 'override me'
|
|
end
|
|
|
|
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
|