Sha256: 2f504c84753c82fce68ce1b0e906a735ee97f267da9fd2db90dc94b76345d036

Contents?: true

Size: 750 Bytes

Versions: 12

Compression:

Stored size: 750 Bytes

Contents

module Mongomatic
  module Validatable
    module Requireable #:nodoc:
      module ClassMethods #:nodoc:
        def requires(*args)
          required_options.concat args        
        end
      
        def required_options
          @required_options ||= []
        end
      end
    
      def self.included(klass)
        klass.extend ClassMethods
      end
    
      def requires(options)
        required_options = self.class.required_options.inject([]) do |errors, attribute|
          errors << attribute.to_s unless options.has_key?(attribute)
          errors
        end
        raise ArgumentError.new("#{self.class} requires options: #{required_options.join(', ')}") if required_options.any?
        true
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
mongomatic-0.1.31 lib/mongomatic/validatable/requireable.rb
mongomatic-0.1.3 lib/mongomatic/validatable/requireable.rb
mongomatic-0.1.2 lib/mongomatic/validatable/requireable.rb
mongomatic-0.1.1 lib/mongomatic/validatable/requireable.rb
mongomatic-0.1.0 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.9 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.8 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.7 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.6 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.5 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.4 lib/mongomatic/validatable/requireable.rb
mongomatic-0.0.3 lib/mongomatic/validatable/requireable.rb