Module: Vines::Services::Storage::CouchDB::ClassMethods

Instance Method Summary collapse

Instance Method Details

#build_from_database(doc = {}, options = {}, &block) ⇒ Object

Override CouchRest::Model::Persistence::ClassMethods#build_from_database to instantiate the fully qualified model class name. We store the bare class name in doc (e.g. Service rather than Vines::Services::CouchModels::Service), so outside query processes don’t need to know our class hierarchy.



15
16
17
18
19
# File 'lib/vines/services/storage/couchdb.rb', line 15

def build_from_database(doc = {}, options = {}, &block)
  src = doc[model_type_key]
  base = (src.blank? || src == self.to_s) ? self : "Vines::Services::CouchModels::#{src}".constantize
  base.new(doc, options.merge(:directly_set_attributes => true), &block)
end

#to_sObject

CouchRest::Model uses Class#to_s to determine design document names as well as the value of doc. Strip off all module names to get clean design document URLs.



24
25
26
# File 'lib/vines/services/storage/couchdb.rb', line 24

def to_s
  self.name.split('::').last
end