Sha256: 00458ae0ea5efa0923191d2349de6c8653d1dc7251ca0f96bf0de34f965706d1

Contents?: true

Size: 960 Bytes

Versions: 9

Compression:

Stored size: 960 Bytes

Contents

module VirtualBox
  class AbstractModel
    # Provides validation methods for a class. Unlike ActiveRecord,
    # validations are instance-level rather than class-level.
    module Validatable
      def errors
        @errors ||= {}
      end

      def add_error(field, error)
        errors[field] ||= []
        errors[field].push(error)
      end

      def clear_errors
        @errors = {}
      end

      def valid?
        validate
        errors.empty?
      end

      # Subclasses should override this method.
      def validate
        true
      end

      def validates_presence_of(field)
        if field.is_a?(Array)
          field.map { |v| validates_presence_of(v) }.all? { |v| v == true }
        else
          value = send(field)
          if value.nil? || value == ""
            add_error(field, "must not be blank.")
            return false
          else
            return true
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
virtualbox-0.6.1 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.6.0 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.5.4 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.5.3 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.5.2 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.5.1 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.5.0 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.4.3 lib/virtualbox/abstract_model/validatable.rb
virtualbox-0.4.2 lib/virtualbox/abstract_model/validatable.rb