module Jsonoid::Document::ClassMethods

Public Instance Methods

_before_destroy_callbacks() click to toggle source
# File lib/jsonoid/callbacks.rb, line 69
def _before_destroy_callbacks
  @_before_destroy_callbacks ||= []
end
_before_save_callbacks() click to toggle source
# File lib/jsonoid/callbacks.rb, line 65
def _before_save_callbacks
  @_before_save_callbacks ||= []
end
_register_field_accessors(name, accessor=nil) click to toggle source
# File lib/jsonoid/fields.rb, line 16
      def _register_field_accessors(name, accessor=nil)
        mod = Module.new
        include mod

        accessor = name if accessor.nil?

        mod.class_eval <<-CODE, __FILE__, __LINE__+1
        def #{accessor}
          @_data[:#{name}]
        end

        def #{accessor}?
          !@_data[:#{name}].nil?
        end

        def #{accessor}=(value)
          @_data[:#{name}] = value
        end
        CODE
      end
_validate_callbacks() click to toggle source
# File lib/jsonoid/callbacks.rb, line 61
def _validate_callbacks
  @_validate_callbacks ||= []
end
all() click to toggle source
# File lib/jsonoid/document.rb, line 121
def all
  Scope.new(self, collection)
end
before_destroy(callback) click to toggle source
# File lib/jsonoid/callbacks.rb, line 56
def before_destroy(callback)
  raise ArgumentError, 'Callback must be a Symbol' unless callback.is_a? Symbol
  self._before_destroy_callbacks << callback
end
before_save(callback) click to toggle source
# File lib/jsonoid/callbacks.rb, line 51
def before_save(callback)
  raise ArgumentError, 'Callback must be a Symbol' unless callback.is_a? Symbol
  self._before_save_callbacks << callback
end
collection(name=nil) click to toggle source
# File lib/jsonoid/collection.rb, line 14
def collection(name=nil)
  @_collection = nil unless name.nil?
  @_collection ||= Jsonoid::Collection.new(name || self.name.downcase + 's')
end
field(name, opts={}) click to toggle source
# File lib/jsonoid/fields.rb, line 4
def field(name, opts={})
  raise ArgumentError, 'Name must be a Symbol' unless name.is_a? Symbol
  raise ArgumentError, 'Opts must be a Hash' unless opts.is_a? Hash

  self._register_field_accessors(name, opts.delete(:name))
  self.fields << [name, opts.delete(:type) || String, opts.delete(:default)]
end
fields() click to toggle source
# File lib/jsonoid/fields.rb, line 12
def fields
  @_fields ||= []
end
find(id) click to toggle source
# File lib/jsonoid/document.rb, line 115
def find(id)
  parse(collection.read(id))
rescue NotFound
  nil
end
parse(json) click to toggle source
# File lib/jsonoid/document.rb, line 125
def parse(json)
  new(JSON.parse(json))
end
store_in(name) click to toggle source
# File lib/jsonoid/collection.rb, line 9
def store_in(name)
  raise ArgumentError, 'Name must be a Symbol' unless name.is_a? Symbol
  collection(name).exists?
end
validate(callback) click to toggle source
# File lib/jsonoid/callbacks.rb, line 12
def validate(callback)
  raise ArgumentError, 'Callback must be a Symbol' unless callback.is_a? Symbol
  self._validate_callbacks << callback
end
validates_numericality_of(name, opts={}) click to toggle source
# File lib/jsonoid/callbacks.rb, line 34
      def validates_numericality_of(name, opts={})
        raise ArgumentError, 'Name must be a Symbol' unless callback.is_a? Symbol

        mod = Module.new
        include mod

        callback = "_validates_numeracality_of_#{name}_callback"

        mod.class_eval <<-CODE, __FILE__, __LINE__+1
        def #{callback}
          errors.add(:field, ":#{name} must be numeric") unless @_data[:#{name}].is_a?(Numeric)
        end
        CODE

        validate callback.to_sym
      end
validates_presence_of(name, opts={}) click to toggle source
# File lib/jsonoid/callbacks.rb, line 17
      def validates_presence_of(name, opts={})
        raise ArgumentError, 'Name must be a Symbol' unless callback.is_a? Symbol

        mod = Module.new
        include mod

        callback = "_validates_presence_of_#{name}_callback"

        mod.class_eval <<-CODE, __FILE__, __LINE__+1
        def #{callback}
          errors.add(:field, ":#{name} can't be nil") if @_data[:#{name}].nil?
        end
        CODE

        validate callback.to_sym
      end