Module: Vines::Services::Storage::CouchDB::ClassMethods
- Included in:
- CouchModels::Fragment, CouchModels::Service, CouchModels::System, CouchModels::Upload, CouchModels::User, CouchModels::Vcard
- Defined in:
- lib/vines/services/storage/couchdb.rb
Instance Method Summary collapse
-
#build_from_database(doc = {}, options = {}, &block) ⇒ Object
Override CouchRest::Model::Persistence::ClassMethods#build_from_database to instantiate the fully qualified model class name.
-
#to_s ⇒ Object
CouchRest::Model uses Class#to_s to determine design document names as well as the value of doc.
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 = {}, = {}, &block) src = doc[model_type_key] base = (src.blank? || src == self.to_s) ? self : "Vines::Services::CouchModels::#{src}".constantize base.new(doc, .merge(:directly_set_attributes => true), &block) end |
#to_s ⇒ Object
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 |