Module: Jsonoid::Document::ClassMethods
- Defined in:
- lib/jsonoid/fields.rb,
lib/jsonoid/document.rb,
lib/jsonoid/callbacks.rb,
lib/jsonoid/collection.rb
Instance Method Summary collapse
- #_before_destroy_callbacks ⇒ Object
- #_before_save_callbacks ⇒ Object
- #_register_field_accessors(name, accessor = nil) ⇒ Object
- #_validate_callbacks ⇒ Object
- #all ⇒ Object
- #before_destroy(callback) ⇒ Object
- #before_save(callback) ⇒ Object
- #collection(name = nil) ⇒ Object
- #field(name, opts = {}) ⇒ Object
- #fields ⇒ Object
- #find(id) ⇒ Object
- #parse(json) ⇒ Object
- #store_in(name) ⇒ Object
- #validate(callback) ⇒ Object
- #validates_numericality_of(name, opts = {}) ⇒ Object
- #validates_presence_of(name, opts = {}) ⇒ Object
Instance Method Details
#_before_destroy_callbacks ⇒ Object
69 70 71 |
# File 'lib/jsonoid/callbacks.rb', line 69 def _before_destroy_callbacks @_before_destroy_callbacks ||= [] end |
#_before_save_callbacks ⇒ Object
65 66 67 |
# File 'lib/jsonoid/callbacks.rb', line 65 def _before_save_callbacks @_before_save_callbacks ||= [] end |
#_register_field_accessors(name, accessor = nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# 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 ⇒ Object
61 62 63 |
# File 'lib/jsonoid/callbacks.rb', line 61 def _validate_callbacks @_validate_callbacks ||= [] end |
#all ⇒ Object
121 122 123 |
# File 'lib/jsonoid/document.rb', line 121 def all Scope.new(self, collection) end |
#before_destroy(callback) ⇒ Object
56 57 58 59 |
# 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) ⇒ Object
51 52 53 54 |
# 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) ⇒ Object
14 15 16 17 |
# 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 = {}) ⇒ Object
4 5 6 7 8 9 10 |
# 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 ⇒ Object
12 13 14 |
# File 'lib/jsonoid/fields.rb', line 12 def fields @_fields ||= [] end |
#find(id) ⇒ Object
115 116 117 118 119 |
# File 'lib/jsonoid/document.rb', line 115 def find(id) parse(collection.read(id)) rescue NotFound nil end |
#parse(json) ⇒ Object
125 126 127 |
# File 'lib/jsonoid/document.rb', line 125 def parse(json) new(JSON.parse(json)) end |
#store_in(name) ⇒ Object
9 10 11 12 |
# 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) ⇒ Object
12 13 14 15 |
# 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 = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# 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 = {}) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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 |