module ValidateSpecificValue::Model

Public Instance Methods

validates_specific(column) click to toggle source
# File lib/validate_specific_value/model.rb, line 8
def validates_specific(column)
  column = column.to_sym
  method_name = "valid_#{column}?"

  # def valid_[attribute]? ... end
  unless method_defined?(method_name)
    define_method method_name do
      errors.clear
      self.class.validators_on(column).each do |validator|
        validator.validate_each(self, column, self[column])
      end
      errors.empty?
    end
  end

  # def self.valid_[attribute]?(value) ... end
  define_singleton_method method_name do |value, errors = {}|
    instance = self.new(column => value)
    instance.send(method_name)
    errors[column] = instance.errors[column]
    errors[column].empty?
  end
end