class Jrec::Model
Attributes
collection[RW]
schema[RW]
table[RW]
attributes[RW]
Public Class Methods
count(conds = {})
click to toggle source
# File lib/jrec/model.rb, line 69 def count conds = {} collection.count(conds).match(/(\d+)/)[1].to_i end
create(data = {})
click to toggle source
# File lib/jrec/model.rb, line 38 def create data = {} record = new(data) record.save record end
data_attr_accessor(*fields)
click to toggle source
# File lib/jrec/model.rb, line 29 def data_attr_accessor *fields fields.each do |field| class_eval %Q{ def #{field}; self.attributes['#{field}'] end def #{field}=val; self.attributes['#{field}']=val end } end end
new(data = {})
click to toggle source
Calls superclass method
# File lib/jrec/model.rb, line 81 def initialize data = {} data ||= {} register_attr_accessors data super(data) end
Public Instance Methods
destroy()
click to toggle source
# File lib/jrec/model.rb, line 112 def destroy return unless self.persisted? run_callbacks :destroy do if result = self.class.delete(identity) process_response result end end end
persisted?()
click to toggle source
# File lib/jrec/model.rb, line 91 def persisted? self.uuid.present? end
save()
click to toggle source
persistency
# File lib/jrec/model.rb, line 102 def save create_or_update if valid? end
update(attrs)
click to toggle source
# File lib/jrec/model.rb, line 106 def update attrs register_attr_accessors attrs self.attributes.update(attrs) save end
uuid()
click to toggle source
# File lib/jrec/model.rb, line 95 def uuid self.attributes['uuid'] end
Private Instance Methods
_update()
click to toggle source
# File lib/jrec/model.rb, line 128 def _update run_callbacks :update do if result = self.class.update(self.attributes.merge(identity)) process_response result end end end
_upsert()
click to toggle source
# File lib/jrec/model.rb, line 136 def _upsert run_callbacks :create do if result = self.class.upsert(self.attributes) process_response result end end end
create_or_update()
click to toggle source
# File lib/jrec/model.rb, line 124 def create_or_update self.persisted? ? _update : _upsert end
identity()
click to toggle source
# File lib/jrec/model.rb, line 144 def identity {'uuid' => self.uuid} end
process_response(result)
click to toggle source
# File lib/jrec/model.rb, line 161 def process_response result self.from_json(result) self end
register_attr_accessors(data)
click to toggle source
allows dynamic attributes!
# File lib/jrec/model.rb, line 151 def register_attr_accessors data data.deep_stringify_keys! # ignore attributes declared with attr_accessor method self.class.data_attr_accessor *data.keys.keep_if{ |key| public_methods.keep_if{ |n| n.to_s.start_with? key }.empty? } end